在.NET Core Application中引用DLL时出现FileNotFoundException

Jay*_*uld 3 c# .net-core

我有一个.NET Core控制台应用程序和一个.NET Core类库.两者都是非常简单的单一类项目.两者都是新建的,全新安装了最新的.NET Core.两者都针对.NET Core 1.1.

每当我在应用程序中包含.NET Core类库时,就会在运行时发生此错误:

System.IO.FileNotFoundException:'无法加载文件或程序集'NAME,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'.该系统找不到指定的文件.

构建任一项目都很好,Intellisense在包含using...语句后向我显示了类库的内容.编写引用和代码后,编译时没有问题.

我在控制台应用程序中为引用的程序集设置了Copy Localto Yes.引用的DLL bin在运行时存在于控制台应用程序的文件夹中.

这是csproj参考:

<Reference Include="NAME">
  <HintPath>path\bin\Debug\netcoreapp1.1\NAME.dll</HintPath>
  <Private>true</Private>
  <SpecificVersion>false</SpecificVersion>
</Reference>
Run Code Online (Sandbox Code Playgroud)

这只发生在.NET Core DLL中,我完全没有.NET Framework 4.5.*及更高版本的问题.

任何人都能对这个问题有所了解吗?我发现有关此问题的任何SO/MSDN页面都是特定的问题,例如针对DLL的错误版本,这没有帮助.

Mar*_*ich 5

使用2.0之前的工具不支持在.NET Core应用程序中引用DLL文件.

原因是依赖图(deps.json文件)生成不包括这些文件,并且很可能无论如何都不会工作,因为它无论如何都无法合并引用的DLL的引用/依赖.

对于即将发布的2.0版本,只要您还引用原始软件包正在使用的所有DLL /软件包,此方案应该可以正常工作.语法是:

<Reference Include="path/to/my.dll" />
Run Code Online (Sandbox Code Playgroud)

.NET Core 2.0还支持以这种方式为.NET 4.6.1构建的引用程序集,但如果DLL使用不受支持的API调用,它可能会在运行时失败.

  • 我实际上也遇到过.net core 2.0这个问题.只有asp.net项目,控制台项目才能正常工作. (4认同)