【问题标题】:FileNotFoundException when after adding a Class Library assembly添加类库程序集后出现 FileNotFoundException
【发布时间】:2017-06-12 12:32:08
【问题描述】:

我确实有一个 ASP.NET MVC Core 应用程序,并且想在我的项目中添加一个类库。 我通过“添加引用”>“浏览”>选择 DLL 将其添加到我的项目中并完成。

我将它添加到类似的代码中

using PagarMe; // works good on code 

我能够编译并运行该应用程序。但是,当用户转到引用 lib 的页面时,我得到了错误。:

FileNotFoundException:无法加载文件或程序集“PagarMe.Pcl,版本=2.0.6372.16631,Culture=neutral,PublicKeyToken=null”。系统找不到指定的文件。

我已经做了什么。

  • 我检查了输出 bin 文件夹和 Dlls 文件。
  • 两个 DLL 均使用“任何 CPU”配置进行编译。
  • 我试过 PCL 和非 PCL 版本。
  • 应用目标框架:.NETCoreApp 1.1
  • 默认类库目标框架:.Net Framework 4.5。
  • 可移植 (PCL) 类库目标框架:.Net Framework 4.5 和 ASP.Net Core 1.0

如何才能在我的核心应用程序中使用类库或 PCL 库?

【问题讨论】:

  • 开启融合日志。这将告诉您活页夹在哪里寻找程序集,以及它期望找到什么。然后你就知道为什么它不存在了。
  • 类库的目标是什么版本的 .NET Framework / .NET Standard Library?该版本是否与您使用的 .NET Core 版本兼容?
  • 当您添加一个 dll 作为引用时,只要 dll 更改或不存在,它就会将该 dll 复制到 bin 文件夹中。 dll 是否期望 Pcl 文件与 dll 位于同一文件夹中?如果是这样,您需要将 Pcl 复制到 bin 文件夹。
  • @RickvandenBosch 编辑了更多细节的问题

标签: c# asp.net .net asp.net-mvc .net-assembly


【解决方案1】:

在 .NET Core 中,您不再使用可移植类库,而是针对 .NET Standard Library 的正确版本。一些 PCL 或共享类可能使用一些不受支持的 参考。

要解决此问题,请尝试以下方法之一:

1.重建您的类库以面向 .NET Standard。例如,.NET Core 1.0 和 .NET Framework 4.6.1 都支持 .NET Standard 1.6。

.NET Standard 可以被认为是下一代可移植类库 (PCL)。 .NET 标准通过管理标准 BCL 并因此在 .NET 运行时之间建立更高的一致性来改进创建可移植库的体验。以 .NET Standard 为目标的库是 PCL 或“基于 .NET Standard 的 PCL”。现有的 PCL 是“基于配置文件的 PCL”。 (取自文档)

2。将您的应用定位到 .NET Framework。 您可以构建一个 ASP.NET Core 应用程序以针对完整的 .NET Framework 而不是仅针对 .NET Core。这为您提供了 ASP.NET Core 的优势,而不受 .NET Core 的限制。

ASP.NET Core != .NET Core

【讨论】:

  • 你是说我不能在我的核心应用程序中使用 PLC 库吗?面向 .Net Framework 4.5 的默认类库怎么样。 ?
  • 默认类库也不适合 .NET Core,因为它可以使用其他 .NET Core 运行时不支持的 API。这就是 .NET 标准的用途:定义一组平台支持的 API。以 .NET Standard 为目标比使用带有 .NET Core 的 PCL 更容易。请查看我在答案中添加的链接,因为它最后还有一个 PCL 兼容性部分,它解释了特定 PCL 配置文件是否以及如何兼容。
  • 我明白了。一旦我无法重建类库(因为它不是我的)我还能做些什么吗?
  • @DanielSantos 您可以构建一个面向完整 .NET Framework 而不是 .NET Core 的 ASP.NET Core 应用程序。这为您提供了 ASP.NET Core 的优势,而不受 .NET Core 的限制。 ASP.NET 核心!= .NET 核心
  • 太完美了。您能否将此添加到您的答案中,我很乐意接受。
猜你喜欢
  • 2013-09-18
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2019-04-16
  • 2021-12-28
  • 1970-01-01
相关资源
最近更新 更多