【问题标题】:Could not load file or assembly Visual Studio 2019 (Community)无法加载文件或程序集 Visual Studio 2019(社区)
【发布时间】:2020-06-24 01:59:07
【问题描述】:

这将是有数百个答案的问题之一,所以请与我坦白,因为我已经尝试了其中的大部分!

我一直在将一个非常大的项目分解成更小的组件,以便慢慢将其全部迁移到 .NET Core。

我的解决方案中的一些项目现在是 .NET 标准类库,还有一些 .Net Framework (4.7.8) 项目。

我今天过得很好,突然我开始明白了:

Could not load file or assembly 'ServiceStack.Text, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我的项目中安装的版本是(原为 - 请继续阅读...)5.8.0.0

现在,我对这个错误并不陌生,我以前发现过它,它通常与项目引用文件 web.config 或 packages.config 引用的 .DLL 版本不同的文件有关在/bin 目录中。

所以我浏览了所有 (34) 个项目文件夹并删除了每个项目中的 servicestack.text.dll。

我在每个项目中都通过 NuGet 将其卸载并重新安装。

我检查了每个项目的 packages.config 文件以及它们是 .NETStandard 项目的位置、项目文件,并确保没有对 ServiceStack.Text v 5.0.0.0 的引用

我已经多次重建、清理和重新启动解决方案、Visual Studio 和我的电脑!

然后我注意到了一些事情......

在我的 .Net Framework 项目中,在 References 下,如果我单击 ServiceStack.Text 文件并查看 Reference Properties,它会显示版本:5.0.0.0,但路径将其指向 5.8.0.0。

在 .NETStandard 项目中,它显示正确的版本。

然后我想也许 5.9 不能在框架项目中工作,所以我从每个项目中卸载它并在每个项目中安装 v 5.0.0.0。这不会构建,因为 Visual Studio 在 .NETStandard 项目中抛出错误,说“检测到降级,请恢复更新的版本”

然后我将 5.9(现在是最新版本)安装到所有 .NETStandard 项目中,将 5.0.0.0 留在 .NET Framework 项目中。

现在它会构建,但是当我尝试运行它时,FileNotFound 异常再次抛出。

所以我试过了;

  • 一切都使用 ServiceStack.Text 5.9
  • 一切都使用 ServiceStack.Text 5.0
  • .NET Framework 项目使用 5.0 和 .NETStandard (2.0) 项目使用 5.9
  • 多次卸载并重新安装
  • 删除所有obj 目录,清理并重建
  • 检查所有项目和包文件

浪费了一天的大部分时间,所以转向SO...我希望有人能提供帮助!

【问题讨论】:

    标签: visual-studio nuget-package .net-standard .net-framework-version servicestack-text


    【解决方案1】:

    对....再次回答我自己的问题...

    大量搞砸之后,我发现了发生了什么,这与 Visual Studio 构建或 .package 文件冲突无关

    错误突然出现的原因是在我正在测试的某个东西中调用了Dump(),而在前面引用不同.NET Framework 的函数中又调用了Dump()。虽然根据 Microsoft 的说法(混合框架)有效,但 ServiceStack 有不同的版本并导致版本冲突。

    如果其他人遇到这种情况,这就是我发现的……

    伪代码示例…….NET 标准项目 (2.0) 中的一个函数

    Function Blah() as Something
     … do something
        Log(TestResult.Dump())
        Return Something
    End Function
    

    然后是一个 .NET Framework (4.7.8) 项目,它使用这个并再次尝试转储结果:

    Sub DoSomething()
       Dim Something = Blah()
       Write(Something.Dump())
    End Sub
    

    这两个框架需要不同版本的ServiceStack.Text,因此在运行的项目中会引发混淆,尽管我猜对了FileNotFoundException

    我一定会再次遇到这个......!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 2017-12-09
      相关资源
      最近更新 更多