2

我从同事那里得到了项目,并在构建项目时遇到了这个错误:

无法加载文件或程序集 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。该系统找不到指定的文件。

我猜这个 dll 在 .NET Framework Dll Folder:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework中,但经过搜索,我找到了许多其他版本的 dll,但我没有找到任何System.Runtime.dllis 4.2.1.0.

这是另一个类似的问题,但没有答案。

System.Runtime.dll 4.2.1.0.NET Framework 中真的存在吗?

4

5 回答 5

13

我知道这是一篇旧帖子,但我认为与遇到这个确切问题的其他人分享我的解决方案很有用。

  1. 我通过终端创建了一个新的控制台应用程序:dotnet new console
  2. 我在 Visual Studio 2019 中打开了控制台应用程序的文件夹。
  3. 我尝试使用运行代码ctrl + f5

这时候我遇到了:Could not load file or assembly 'System.Runtime, Version=5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

为了解决这个问题,我不必在 Visual Studio 2019 中打开 Console App 文件夹,而是打开其中.csprojctrl + f5. 之后就顺利运行了。希望这对其他人有帮助。排查了很久才找到解决办法。

TL;DR.csproj在 Visual Studio 2019 中打开文件,而不是它所在的项目文件夹。

于 2021-02-24T17:56:29.683 回答
7

当您打开文件夹而不是解决方案文件时会发生这种情况。只需确保加载解决方案文件而不是项目目录。

于 2021-06-21T10:47:07.270 回答
2

这是一个相当烦人的问题。从我注意到的情况来看,这是由于dependentAssembly您安装了新软件包或对其进行了更新。那是给我的。

尝试newVersion检查Web.config. 如果我是正确的,你应该有类似的东西:

<dependentAssembly>
  <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.3.0" />
</dependentAssembly>

确保您Web.config的dependentAssembly 与其中定义的版本Web.Base.config(或 Nuget 包管理器中的版本)相匹配。如果不更改为newVersion=您在 Nuget 包管理器中安装的版本。

如果这不起作用,您可以查看此链接。可能是一个适合您的选项。

于 2020-02-28T12:04:15.550 回答
1

为了解决这个问题,我原本猜测System.Runtime.dll应该是在.NET Framework Dll Folder,因为在这个dll的Nuget页面中,版本历史不包含4.2.1.0,但是在阅读了@Scircia的答案后,我尝试将最新的Nuget添加System.Runtime.dll到项目中Right Click On Project > Property Page > References > Add。dll 的 Nuget 版本是4.3.1,但它的 dll 版本是4.6.27406.3.

添加后,一个新的错误显示:

程序集 'XXXX(It's secret), Version=xxxx, Culture=neutral, PublicKeyToken=xx' 使用 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a',它的版本高于引用的程序集 'System .Runtime,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'

但是我添加的dll是4.6.27406.3,为什么会出现这个4.0.0.0错误?经过一番尝试,我终于发现主要原因是,在项目中使用了很多组件.NET Framework 3.5,所以它应该在运行时运行3.5,但是当我运行时Right Click On Project > Property Page > Build > Target Framework,它显示当前使用4.0

所以我按照这些步骤将目标框架从更改4.03.5单击确定,然后再次从3.5更改为4.0,然后错误就解决了。也就是说,通过4.0 > 3.5 > 4.0,web.config 是自动修改的,并且似乎一些需要3.5被删除的 dll 被删除,成为一个真实的4.0,并且Framework 4.0运行System.Runtime.dll良好。

既然它说需要4.2.1.0,但我添加4.6.27406.3了作品,所以我想使用比4.2.1.0允许的更高版本,不需要完全使用4.2.1.0.

但还有一点是,由于项目需要运行3.5才能使 Web UI 包正常工作,更改为 后4.0,部分 UI 控件失去了功能。

所以我得出结论,XXXX(It's secret).dll不应该在.NET Framework 3.5项目中使用。

此外,我使用 Resharper 来查看XXXX.dll它的显示.NETCoreApp

于 2020-02-29T09:21:32.917 回答
1

我今天遇到了 System.Runtime 4.2.2.0 的这个问题。在 Visual Studio 中打开解决方案的文件夹而不是打开解决方案文件时会发生这种情况。关闭 Visual Studio 2019 并单击解决方案文件将其打开解决了我的问题。

于 2021-08-17T16:22:53.623 回答