发现 System.Runtime 和 System.IO 之间存在冲突
Found conflict between System.Runtime as well as System.IO
我将解决方案上的 .Net 框架从 4.5.2
升级到 4.8
。我最初收到了一些警告,为了修复它们,我对警告中的所有包进行了 Update-Package -Id some.package –reinstall
。
然后它显示了一个通用警告,在查看诊断构建日志后,我看到了以下 4 个警告:
There was a conflict between "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes".
和:
There was a conflict between "System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
和:
There was a conflict between "System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
最后:
There was a conflict between "System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.IO, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
我已经看到了解决方案 and ,不幸的是它们没有帮助。
现在,我根据 this post 的建议更改了我的 *.csproj 文件中的以下内容,从而成功解决了 System.Net.Http
问题:
<Reference Include="System.Net.Http">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
</Reference>
更改为:
<Reference Include="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
</Reference>
但是,我似乎不知道如何解决 System.Runtime
和 System.IO
问题。
Found conflict between System.Runtime as well as System.IO
您在升级框架版本时似乎引用了一些具有更高程序集版本的旧 nuget 包。
您可以按照我的步骤来解决您的问题:
1) 卸载您的项目并将它们添加到 xxx.csproj
文件
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
之后,重新加载您的项目,清理并重建您的项目。
2) 在 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.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
它使用构建扩展目录中的 dll 而不是 Nuget 中的 dll。
希望对您有所帮助。
我最终安装了 Visual Studio 2019,然后通过更新更新了每个项目的属性以使用 .Net Framework 4.8 和 运行,并且它运行正常。
我将解决方案上的 .Net 框架从 4.5.2
升级到 4.8
。我最初收到了一些警告,为了修复它们,我对警告中的所有包进行了 Update-Package -Id some.package –reinstall
。
然后它显示了一个通用警告,在查看诊断构建日志后,我看到了以下 4 个警告:
There was a conflict between "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes".
和:
There was a conflict between "System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
和:
There was a conflict between "System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
最后:
There was a conflict between "System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.IO, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
我已经看到了解决方案
现在,我根据 this post 的建议更改了我的 *.csproj 文件中的以下内容,从而成功解决了 System.Net.Http
问题:
<Reference Include="System.Net.Http">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
</Reference>
更改为:
<Reference Include="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
</Reference>
但是,我似乎不知道如何解决 System.Runtime
和 System.IO
问题。
Found conflict between System.Runtime as well as System.IO
您在升级框架版本时似乎引用了一些具有更高程序集版本的旧 nuget 包。
您可以按照我的步骤来解决您的问题:
1) 卸载您的项目并将它们添加到 xxx.csproj
文件
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
之后,重新加载您的项目,清理并重建您的项目。
2) 在 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.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
它使用构建扩展目录中的 dll 而不是 Nuget 中的 dll。
希望对您有所帮助。
我最终安装了 Visual Studio 2019,然后通过更新更新了每个项目的属性以使用 .Net Framework 4.8 和 运行,并且它运行正常。