記一次 .net core引用項目文件,提示找不到dll的問題


項目背景:

 
LES.Core.Api需要引用LES.Core.Utility(這個項目是新建的)
我引用到了,如下圖
 
0
編譯也沒有問題,但是運行起來,通過前端調用的時候,提示下面錯誤
2021-04-29 16:03:15,704| ERROR
Could not load file or assembly 'LES.Core.Utility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 系統找不到指定的文件。
【自定義錯誤】:Could not load file or assembly 'LES.Core.Utility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 系統找不到指定的文件。
【異常類型】:FileNotFoundException
【異常信息】:Could not load file or assembly 'LES.Core.Utility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. 系統找不到指定的文件。
【堆棧調用】: at LES.Core.Api.Controllers.LESPublicController.PieceOnLine(Wip_WorkPieceOnLineParam param)
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at LES.Core.Api.Controllers.LESPublicController.PieceOnLine(Wip_WorkPieceOnLineParam param)
at lambda_method496(Closure , Object , Object[] )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--------------------------------
 
 
 

排查過程:

在bin\Debug\net5.0文件夾中發現有這個dll,但是為什么會找不到呢?
通過百度,發現這個
說是 deps.json沒有配置 LES.Core.Utility,我查看了文件,發現真的沒有。
那為什么沒有呢?暫時不清楚。
怎么解決呢?這個說是自己在deps.json配置 LES.Core.Utility,我感覺不靠譜。
 
后來我突然發現一個問題,如圖
0
注意:LES.Core.Extensions是原先引用的,他有左側的小箭頭,說明下面有東西,展開發現是 LES.Core.Extensions引用的那些,如下圖
0
但是 我新引用的LES.Core.Utility 左側有沒有小箭頭,那是不是這里的問題?
為啥沒有小箭頭呢?目前還不知道原因。
但是怎么解決讓他有小箭頭呢?
我突然想到了,之前編譯的時候出現一個問題呢
找不到資產文件project.assets.json (詳見文檔:1、找不到資產文件project.assets.json...
鏈接:http://note.youdao.com/noteshare?id=ff18df51fddd24427b2f9ca1360c725a&sub=47EAC4F806594B20B9630C8C126F88DC)
那種解決方案是 重新還原引用的包。
所以我嘗試的 重新還原了下
在這種情況下,打開命令行工具
0
 
第一步:運行 msbuild -t:restore
第二步:然后運行 msbuild,或使用 dotnet build(它會自動還原包)。
 
一通操作之后,再看引用,竟然有了小箭頭。
0
看起來是正常了。
再用前台訪問,發現可以了。
 

總結:

雖然LES.Core.Utility項目中有使用反射的方法,但是這個問題還真不是反射導致的問題。應該是引用的問題,需要重新還原。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM