我有一个.NET核心控制台应用程序和一个.NET核心类库。这两个项目都是非常简单的,单类项目。这两个都是新建的,新安装了最新的.NET内核。这两个目标都是.NET Core1.1。
每当我在应用程序中包含.NET核心类库时,运行时就会发生此错误:
System.IO.FileNotFoundException:“无法加载文件或程序集”名称、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null。系统找不到指定的文件。
构建两个项目都可以,Intellisense在包含一个using...语句之后向我展示类库的内容。在编写引用和代码时,编译时没有任何问题。
我已经将控制台应用程序中引用的程序集的Copy Local设置为Yes。运行时控制台应用程序的bin文件夹中存在引用的DLL。
以下是csproj引用:
<Reference Include="NAME">
<HintPath>path\bin\Debug\netcoreapp1.1\NAME.dll</HintPath>
<Private>true</Private>
<SpecificVersion>false</SpecificVersion>
</Reference>这只发生在.NET核心DLL中,我对.NET Framework4.5.*和up完全没有问题。
有人能说明一下这个问题吗?我发现的关于这一点的任何SO/MSDN页面都是一些特定的问题,比如针对不正确的DLL版本,这没有帮助。
发布于 2017-05-25 10:13:27
使用预2.0工具不支持引用.NET核心应用程序中的DLL文件。
原因是依赖图(deps.json文件)生成不包括这些文件,而且很可能无论如何都不能工作,因为它无论如何都不能合并引用/引用的依赖项。
对于即将发布的2.0版本,只要您同时引用原始包所使用的所有DLL/包,此场景就可以工作。语法如下:
<Reference Include="path/to/my.dll" />.NET Core2.0还将以这种方式支持引用为.NET 4.6.1构建的程序集,但如果.NET使用不受支持的API调用,它可能在运行时失败。
发布于 2018-11-15 16:32:41
经过深入研究,我找到了一个适合我的.NET Core2.0解决方案。
核心问题:我通过Visual 2017添加了项目引用。在我的web应用程序中,我引用了两个.NET核心库;当所有东西在运行时编译时,我得到一个指向这两个DLL之一的FileNotFound异常。
对我有效的解决方案:
.csproj。删除对项目的引用。cd进入项目文件夹并手动添加引用,使用dotnet add reference ..\..\foo\bar.csproj对我来说,这解决了这个问题。
发布于 2017-05-25 09:52:36
不确定这是否可以算作修复,但这至少是一种解决办法。
我没有引用DLL,而是简单地将类库的项目添加到控制台应用程序中,而是在控制台应用程序中包含了对类库项目的依赖关系引用,并进行了清理/重建。工作得很好。
显然,这并不是针对专用DLL的修复,但它可能会有所帮助。
https://stackoverflow.com/questions/44176640
复制相似问题