记一次 .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)
--------------------------------
 
 
 

排查过程:

在binDebug et5.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项目中有使用反射的方法,但是这个问题还真不是反射导致的问题。应该是引用的问题,需要重新还原。

人一定要靠自己
原文地址:https://www.cnblogs.com/schangxiang/p/14720999.html