首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FileNotFoundException核心应用程序中引用DLL时的.NET

在FileNotFoundException核心应用程序中引用DLL时的.NET
EN

Stack Overflow用户
提问于 2017-05-25 09:11:14
回答 3查看 7.7K关注 0票数 6

我有一个.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引用:

代码语言:javascript
复制
<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版本,这没有帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-25 10:13:27

使用预2.0工具不支持引用.NET核心应用程序中的DLL文件。

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

对于即将发布的2.0版本,只要您同时引用原始包所使用的所有DLL/包,此场景就可以工作。语法如下:

代码语言:javascript
复制
<Reference Include="path/to/my.dll" />

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

票数 5
EN

Stack Overflow用户

发布于 2018-11-15 16:32:41

经过深入研究,我找到了一个适合我的.NET Core2.0解决方案。

核心问题:我通过Visual 2017添加了项目引用。在我的web应用程序中,我引用了两个.NET核心库;当所有东西在运行时编译时,我得到一个指向这两个DLL之一的FileNotFound异常。

对我有效的解决方案:

  • 关闭
  • 打开包含引用的.csproj。删除对项目的引用。
  • 从终端,cd进入项目文件夹并手动添加引用,使用dotnet add reference ..\..\foo\bar.csproj
  • 启动Visual,构建并运行您的(web)应用程序

对我来说,这解决了这个问题。

票数 3
EN

Stack Overflow用户

发布于 2017-05-25 09:52:36

不确定这是否可以算作修复,但这至少是一种解决办法。

我没有引用DLL,而是简单地将类库的项目添加到控制台应用程序中,而是在控制台应用程序中包含了对类库项目的依赖关系引用,并进行了清理/重建。工作得很好。

显然,这并不是针对专用DLL的修复,但它可能会有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44176640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档