You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2017升级.NET框架后遇CS1703重复程序集引用错误求助

解决VS2017中.NET Framework升级后CS1703程序集重复引用错误

问题根源

升级到.NET Framework 4.6.2后,WinRT相关程序集(System.Runtime.WindowsRuntime、Microsoft.UI.Xaml)因NuGet包版本冲突、项目残留引用导致重复加载不同版本,触发CS1703错误。

解决步骤

1. 彻底清理项目残留文件

  • 删除项目根目录、解决方案根目录下的所有packages文件夹,同时删除项目的bin、obj文件夹,以及解决方案的.vs隐藏文件夹(避免VS缓存干扰)。
  • 打开项目文件(.csproj),查找并删除所有重复的<Reference>节点或指向旧版本程序集的引用项,确保没有硬编码的非NuGet管理引用。

2. 修正NuGet引用(PackageReference模式)

  • 打开NuGet包管理器,先卸载Microsoft.Windows.SDK.Contracts及相关的WinRT包,再重新安装适配.NET Framework 4.6.2的版本(例如Microsoft.Windows.SDK.Contracts选10.0.17763.2237,Microsoft.UI.Xaml选2.7.3这类支持.NET Framework的旧版本)。
  • 手动编辑.csproj文件,确保程序集引用通过PackageReference明确指定版本,避免自动引入多版本:
    <ItemGroup>
      <PackageReference Include="System.Runtime.WindowsRuntime" Version="4.6.0" />
      <PackageReference Include="Microsoft.UI.Xaml" Version="2.7.3" />
      <PackageReference Include="Microsoft.Windows.SDK.Contracts" Version="10.0.17763.2237" />
    </ItemGroup>
    

3. 添加程序集绑定重定向

在项目的App.config(桌面项目)或Web.config(Web项目)中添加绑定重定向,强制系统使用指定版本的程序集:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <!-- 强制使用System.Runtime.WindowsRuntime 4.6.0版本 -->
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.WindowsRuntime" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.7.0.0" newVersion="4.6.0.0" />
      </dependentAssembly>
      <!-- 强制使用Microsoft.UI.Xaml匹配版本 -->
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.UI.Xaml" publicKeyToken="de31ebe4ad15742b" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.7.0.0" newVersion="2.7.3.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

注意:newVersion需与你安装的NuGet包版本一致。

4. 统一NuGet配置

  • 检查解决方案根目录的NuGet.Config文件,确保仅保留官方NuGet源,禁用本地离线包源避免版本混乱:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
      </packageSources>
      <disabledPackageSources>
        <add key="Microsoft Visual Studio Offline Packages" value="true" />
      </disabledPackageSources>
    </configuration>
    
  • 若没有NuGet.Config,直接新建该文件并添加上述内容。

5. 重新生成项目

执行清理解决方案(菜单:生成 → 清理解决方案),然后重新生成整个解决方案,确保所有引用正确加载。

额外注意事项

  • VS2017对PackageReference的兼容性有限,若操作后仍有问题,关闭VS后删除.vs文件夹再重新打开项目。
  • 禁止手动修改packages文件夹内的文件,所有引用操作均通过NuGet管理器或.csproj文件完成。

内容的提问来源于stack exchange,提问作者Ingmar Helsmoortel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:05:32