.net 未能加载文件或程序集'System.Runtime,版本=4.2.1.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'

uurv41yg  于 2022-11-19  发布在  .NET
关注(0)|答案(6)|浏览(798)

我从同事那里得到了这个项目,但在构建项目时出现了以下错误:
未能加载文件或程序集“System.Runtime,Version=4.2.1.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或它的某个依赖项。系统找不到指定的文件。
我猜此dll位于.NET Framework Dll文件夹中:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework,但搜索后,我发现许多其他版本的dll,但我没有发现任何System.Runtime.dll4.2.1.0
这是另一个similar question,但没有答案。
System.Runtime.dll 4.2.1.0真的存在于.NET Framework中吗?

xdnvmnnf

xdnvmnnf1#

我知道这是一个老职位,但我认为这是有用的分享我的解决方案与其他人遇到这个确切的问题。
1.我通过终端创建了一个新的控制台应用程序:dotnet new console
1.我在Visual Studio 2019中打开了控制台应用程序的文件夹。
1.我尝试使用ctrl + f5运行代码
就在那时我遇到了:Could not load file or assembly 'System.Runtime, Version=5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
为了解决这个问题,我没有在Visual Studio 2019中打开Console App文件夹,而是打开了里面以.csproj结尾的文件,然后做了ctrl + f5,之后运行得很顺利,希望这对其他人有帮助,一直在排查很长时间才找到解决方案。

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

1aaf6o9v

1aaf6o9v2#

当您开启文件夹而非方案档时,就会发生这种情况。只要确定您载入的是方案档,而不是项目的目录即可。

qyyhg6bp

qyyhg6bp3#

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

eit6fx6z

eit6fx6z4#

这是一个相当烦人的问题。据我所知,它是由dependentAssembly引起的,一旦你安装一个新的包或更新它。至少这是我的根本原因。
尝试检查Web.config中的dependentAssembly newVersion。如果我没猜错,您应该有类似以下的内容:

<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套件管理员中安装的版本。
如果这不起作用,你可以 checkout this link。可能是一个选项,这将为您工作。

i2loujxw

i2loujxw5#

为了解决这个问题,我原本猜测System.Runtime.dll应该在.NET Framework Dll Folder中,因为在这个dll的Nuget Page中,版本历史中并没有包含4.2.1.0,但是在阅读@Scircia的答案后,我尝试通过Right Click On Project > Property Page > References > Add将最新的Nuget System.Runtime.dll添加到项目中,这个dll的Nuget版本是4.3.1,但是它的dll版本是4.6.27406.3
添加后,出现新错误:
程序集“XXXX(它是秘密的),版本=x.x.x.x,区域性=中性,PublicKeyToken=xx”使用“System.Runtime,版本=4.2.1.0,区域性=中性,PublicKeyToken= b 03 f5 f7 f11 d50 a3 a”,该程序集的版本高于被引用程序集“System.Runtime,版本=4.0.0.0,区域性=中性,PublicKeyToken= b 03 f5 f7 f11 d50 a3 a”
但是我添加的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
所以我按照these step将目标框架从4.0更改为3.5,单击OK,然后再次从3.5更改为4.0,这样错误就解决了。即,通过4.0 > 3.5 > 4.0,web.config自动修改,似乎一些需要3.5的dll被删除,成为真实的的4.0。并且在Framework 4.0System.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控件失去了功能。
因此,我得出结论,不应在.NET Framework 3.5项目中使用XXXX(It's secret).dll
此外,我使用Resharper看到XXXX.dll显示它是.NETCoreApp

2ul0zpep

2ul0zpep6#

我的快速解决方案是删除[应用程序名称].config文件以使其运行。
如果你只需要让程序运行,这可能就足够了。

相关问题