7

在编译一个从 VS2003 中的 .NET 1.1 移植到 VS2008 中的 .NET 3.5 的解决方案时,我得到了几个建议,其中这个具有代表性:

考虑将程序集 "System.Windows.Forms, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes" 从版本 "1.0.5000.0" [] 重新映射到版本 "2.0.0.0" [C:\Program Files (x86 )\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\System.Windows.Forms.dll] 来解决冲突并摆脱警告。

解决方案中的两个项目都没有 app.config 文件。但是,有数以万计的 *.resx 文件包含“Version=1.0.5000.0”

我应该使用“Version = 2.0.0.0”进行全局搜索和替换,还是应该如何纠正这个问题?

更新

我选择了“项目>升级项目”,重新构建,现在消息包括:

C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets:警告 MSB3245:无法解析此引用。找不到程序集“System.Windows.Forms.DataGrid”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,您可能会遇到编译错误。

无法解决“System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes”和“System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”之间的冲突。任意选择“System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes”。

无法解决“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes”和“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”之间的冲突。任意选择“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes”。

考虑将程序集 "System.Windows.Forms, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes" 从版本 "1.0.5000.0" [] 重新映射到版本 "3.5.0.0" [C:\Program Files (x86 )\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\System.Windows.Forms.dll] 来解决冲突并摆脱警告。

更新 2

我的代码中确实有这一行:

this.dtGridUPC = new System.Windows.Forms.DataGrid(); 

尽管编译器警告我:“找不到程序集“System.Windows.Forms.DataGrid”。检查以确保程序集存在于磁盘上。如果您的代码需要此引用,您可能会遇到编译错误。 "

...我没有编译错误。

越来越好奇。

4

5 回答 5

15

Auto-generate binding redirects在 Visual Studio 的项目属性窗口中使用

在此处输入图像描述

于 2019-11-05T17:16:59.897 回答
8

您可以添加一个 app.config 文件,然后像这样映射库:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="dotless.ClientOnly" publicKeyToken="96b446c9e63eae34" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.3.1.0" newVersion="1.3.1.0" />
      </dependentAssembly>
于 2013-10-04T13:45:13.853 回答
3

我刚刚修复了这个错误,非常简单。关闭您的项目。再次打开。转到 NuGet 包以获取解决方案。您将有一个部分合并。就在搜索工具附近。去那里并选择您要使用的版本。还要确保您的所有项目都具有相同的版本。然后在所有解决方案中在您的命名空间之前添加缺少的库。现在编译你的项目,我希望它会再次开始工作。

于 2017-02-17T14:08:47.657 回答
2

我用这段代码添加了一个 app.config 文件,我的编译时间现在是原来的 1/3。这是为 System.Data

<configuration>
    <runtime>
        <assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <!-- 2.0 to 3.5 -->
            <dependentassembly>
                <assemblyidentity culture="neutral" publickeytoken="969db8053d3322ac" name="System.Data" />
                <bindingredirect newVersion="3.5.0.0" oldVersion="2.0.0.0" />
            </dependentassembly>

            <!-- 1.0 to 3.5 -->
            <dependentassembly>
                <assemblyidentity culture="neutral" publickeytoken="969db8053d3322ac" name="System.Data" />
                <bindingredirect newVersion="3.5.0.0" oldVersion="1.0.5000.0" />
            </dependentassembly>
        </assemblybinding>
    </runtime>
</configuration>

我在这里找到了这段代码:http: //grenangen.se/node/25#comment-1003

于 2017-01-10T21:48:37.250 回答
2

在我的情况下,输出窗口中显示了以下警告:

11>  Consider app.config remapping of assembly "log4net, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a" from Version "1.2.15.0" [] to Version "2.0.12.0" [C:\s\[SolutionName]\log4net.dll] to solve conflict and get rid of warning.
11>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2182,5): warning MSB3247: Found conflicts between different versions of the same dependent assembly. In Visual Studio, double-click this warning (or select it and press Enter) to fix the conflicts; otherwise, add the following binding redirects to the "runtime" node in the application configuration file: <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIdentity name="log4net" culture="neutral" publicKeyToken="669e0ddf0bb1aa2a" /><bindingRedirect oldVersion="0.0.0.0-2.0.12.0" newVersion="2.0.12.0" /></dependentAssembly></assemblyBinding>

当我在“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets”文件打开的输出窗口中单击此警告时。我很惊讶我应该更改解决方案文件夹之外的内容。另一个惊喜是,即使我使用 web.config 配置文件处理 Web 服务,我也应该更改 app.config。程序员可能没有意识到这个警告也适用于服务......

无论如何,在错误列表窗口中双击此警告,而不是在输出窗口中。确保按下错误列表窗口顶部的警告按钮,以便您可以在错误列表窗口中看到此警告。这样,您应该以适当的方式解决此警告。

于 2021-04-08T13:25:11.827 回答