1

我将解决方案上的 .Net 框架从 .Net 升级4.5.24.8. 我最初收到了一些警告,为了修复它们,我Update-Package -Id some.package –reinstall对警告中的所有包都做了。

然后它显示了一个通用警告,在查看诊断构建日志后,我看到了以下 4 个警告:

“mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”和“mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes”之间存在冲突。

和:

“System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”和“System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”之间存在冲突。

和:

“System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”和“System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”之间存在冲突。

最后:

“System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”和“System.IO, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”之间存在冲突。

我在这里这里看到了解决方案,不幸的是它们没有帮助。

现在我设法通过根据这篇文章的System.Net.Http建议更改我的 *.csproj 文件中的以下内容来解决这个问题:

    <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.RuntimeSystem.IO问题。

4

2 回答 2

1

我最终安装了 Visual Studio 2019,然后更新了每个项目的属性以使用 .Net 框架 4.8 并运行更新,它就可以正常工作。

于 2020-02-14T23:23:23.957 回答
1

发现 System.Runtime 和 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。

希望它可以帮助你。

于 2020-02-11T12:39:27.067 回答