【问题标题】:Could not load file or assembly 'System.Web.Services, Version=2.0.0.0 error in asp.net core 3.1 solution在 asp.net core 3.1 解决方案中无法加载文件或程序集 'System.Web.Services, Version=2.0.0.0 错误
【发布时间】:2020-08-06 12:56:08
【问题描述】:

我正在研究 Asp.Net Core 3.1 解决方案。我有一个要求,我需要在 .Net Framework 2.0 中添加另一个 Asp.Net dll 构建。当我在我的核心解决方案中添加该 dll 时,它会正确构建,但它给我运行时错误无法加载文件或程序集“System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”。 系统找不到指定的文件。

谁能帮我解决这个问题?

【问题讨论】:

  • .NET Core 与 .NET Framework 不兼容。您需要将 .NET Framework dll 迁移到 .NET Standard 或 .NET Core 3。

标签: asp.net .net asp.net-core


【解决方案1】:

这是不可能的。您只能引用为 .net 核心或 .net 标准(而不是 .net 框架)编译的 dll。如果您拥有以 .net 标准为目标的代码,则必须重新编译 dll;如果您没有,则需要寻找替代品。

【讨论】:

  • 好的,我知道了,无法引用 .net 框架 dll,但我尝试更改 .csproj 文件中的框架,它不起作用。我是否必须在 .net core 中重写整个代码或是否有任何其他选项?
  • 根据代码的作用以及它所依赖的完整框架的哪些部分,您可能需要重新编写。 .net 标准项目使用更新的 csproj 格式,因此您不能只是将目标从框架更改为标准,您需要创建一个项目目标标准,然后复制代码/更新引用等,具体取决于复杂性项目,这可能是一件很快的事情,也可能需要数周的工作。
【解决方案2】:

我认为您需要做的是安装 .net Framework 3.5 功能。当您尝试使用依赖于 .Net Framework 2.0(差不多 15 年!)的 dll 时,默认情况下不会安装这些组件以使它们不再运行。安装较旧的框架 (which there is instructions on how to do here) 应该安装先决条件,以便加载您的古老 DLL。

然而,我不希望这能很好地工作。虽然您可以使用 .Net Core 中的 .net Framework DLL,但它使用 .Net Standard Compatibility Shim,它允许您编译从核心引用旧 DLL 的应用程序。但是,它保证它们会起作用。

由于 shim 用于 .Net Standard,它只能针对低至 .Net Framework 4.5,所以如果它确实有效,你应该算自己很幸运,并寻求更新版本的你的基于 asp.Net 2.0 的 dll。好吧,无论如何你都应该这样做。几乎没有正当理由尝试将 .net core 3 与在本网站上的某些人出生之前构建的 ANCIENT 程序集一起使用。

【讨论】:

  • 意味着我需要在 .Net Core 中重写整个代码,或者有任何其他选项
猜你喜欢
  • 1970-01-01
  • 2012-08-20
  • 2017-12-14
  • 2014-02-17
  • 1970-01-01
  • 2018-10-04
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多