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

Visual Studio 2022编译UWP类库.dll时遇CS1704重复程序集引用错误

解决CS1704重复WinMD引用错误

这个错误的核心原因是你安装的Microsoft.Windows.SDK.Contracts包(10.0.26100.1742)和项目依赖的Windows 10 SDK(10.0.19041.0)包含了同名的WinMD文件,两者版本差异过大,导致编译器无法区分。以下是针对性的解决步骤:

1. 统一SDK版本(推荐方案)

  • 打开项目属性 → 应用选项卡,将目标平台版本升级到与Microsoft.Windows.SDK.Contracts匹配的版本(即10.0.26100.x)。你可以在Visual Studio安装器中添加这个版本的Windows SDK。
  • 若项目基于.NET Framework,升级SDK后,冲突的WinMD文件会自动对齐,重复引用问题会消失。

2. 切换到.NET 6+并移除Contracts包(更简洁方案)

.NET 6及以上版本原生支持Windows Runtime API,无需依赖Microsoft.Windows.SDK.Contracts包:

  1. 在项目属性中把目标框架改为.NET 6(或更高版本)。
  2. 打开NuGet包管理器,卸载Microsoft.Windows.SDK.Contracts。
  3. 确保目标平台版本设置为10.0.19041.0或更高(满足Windows.Graphics.Capture的最低要求)。
  4. 直接使用Windows.Graphics.Capture、Windows.Graphics.DirectX.Direct3D11等命名空间即可。

3. 手动排除重复引用(应急方案)

如果必须保留现有框架和SDK版本,编辑项目的.csproj文件,通过ExcludeAssets排除冲突的WinMD文件:

<PackageReference Include="Microsoft.Windows.SDK.Contracts" Version="10.0.26100.1742">
  <ExcludeAssets>
    Windows.UI.Xaml.Core.Direct.XamlDirectContract.winmd;
    Windows.Storage.Provider.CloudFilesContract.winmd
    <!-- 添加其他冲突的WinMD文件名 -->
  </ExcludeAssets>
</PackageReference>

或者找到系统SDK中对应WinMD的引用路径(通常在C:\Program Files (x86)\Windows Kits\10\References\10.0.19041.0\下),在项目的引用列表中移除这些旧版本的WinMD,只保留NuGet包提供的版本。

4. 检查SharpDX兼容性

确保SharpDX.Direct3D11是最新稳定版本,部分旧版SharpDX可能与高版本WinRT API存在依赖冲突,升级后可能解决隐性问题。

内容的提问来源于stack exchange,提问作者bruno.pablo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:53:10