gpt4 book ai didi

c# - 无法加载文件或程序集 'System.IO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一

转载 作者:行者123 更新时间:2023-11-30 22:59:48 25 4
gpt4 key购买 nike

在过去的几天里,我一直在拼命尝试解决我在安装 NuGet 包后遇到的依赖 hell 问题,该包从 System.Collections.* 中添加了一堆新的依赖项。 , System.Diagnostics.* , System.IO.* , System.Runtime.* , System.Text.* , System.Threading.*System.Xml.* namespace 。 MVC 项目我目前在目标 .Net 4.7.1 中遇到问题。

包安装将以下绑定(bind)重定向添加到我的 web.config

  <dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.Extensions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Linq" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Xml.ReaderWriter" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Linq.Expressions" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>

…导致以下异常:

Could not load file or assembly 'System.IO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Reference assemblies should not be loaded for execution.  They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)

web.config 中突出显示的行是:

<add assembly="System.IO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

我最终发现,如果我删除 System.IO 的绑定(bind)重定向它清除了该错误,然后提示绑定(bind)重定向列表中的其他项目之一。我一一删除了所有绑定(bind)重定向,问题就解决了。

我很难理解这里发生了什么。例如,如果我在 Visual Studio 项目的引用中查看 System.IO 的属性检查器,它指向 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.1\Facades\System.IO.dll而不是 Nuget 文件夹,如果我在另一个编辑器中打开 .csproj 文件,我可以看到引用确实如下所示:

<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>

这里肯定有问题,因为有重复的 <Private>True</Private>条目,我已经更正了一次,但它们被添加回来了。这是所有新组件的问题。我想知道 Nuget 包是否有问题?

如有任何帮助/建议,我们将不胜感激。

最佳答案

I wonder if there is an issue with the Nuget packages somewhere?

是的,这应该是 nuget 包的问题。一些 nuget 包依赖于 NETStandard.Library,它会引入那些 system.* 依赖,另一方面,一些 nuget 包在 .NET 下安装依赖标准框架不正确,我什至报告过herehere ,此问题与nuget包本身有关,我们需要联系此包的作者更新此包。

以上可能是您在安装添加了一堆 system.* 依赖项的 NuGet 包后进入的原因。同时,.NET Framework 4.7.1 添加了对 .NET Standard in-box 的支持,我们无需将那些 system.* nuget 包添加到包中。当其他 nuget 包拉入那些 system.* 依赖包时,nuget/VS 将为来自 nuget 的那些包添加绑定(bind)重定向到 web.config 文件,但 VS 使用那些 system.* 默认来自 .net framework,在这种情况下,由于绑定(bind)重定向,VS 可能找不到那些 system.* 依赖项。这就是您收到错误“无法加载文件或程序集‘System.IO...’”的原因。

要解决此问题,解决方法是从程序集的 web.config 文件中删除绑定(bind)重定向。检查线程 .NET Standard issues on .NET Framework 4.7.1了解一些细节。

此外,如果您不想将这些系统依赖项添加到您的项目中,您可以将它们从您的项目中删除。

希望这对您有所帮助。

关于c# - 无法加载文件或程序集 'System.IO, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51944480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com