在 Visual Studio 2022 中编译类库 .dll(通用 Windows)时出现问题

问题描述 投票:0回答:1

我对 C# 语言有点缺乏经验,尤其是 Visual Studio。

我正在 Visual Studio 中开发一个用于屏幕捕获的应用程序,使用 Microsoft.Windows.SDK.Contracts 和 SharpDX.Direct3D11(两者均通过 NuGets Packages 安装),以实际使用 Windows.Graphics.Capture 等库; Windows.Graphics.DirectX.Direct3D11.

我的项目规格:

Visual Studio版本:17.11.4 Windows 10 SDK:10.0.19041.0 Microsoft.Windows.SDK.Contracts版本:10.0.26100.1742

但是,我面临以下问题:

`CS1704 An assembly with the same simple name Windows.UI.Xaml.Core.Direct.XamlDirectContract' has already been imported. Try removing one of the references (e.g. 'C:\Users\BRUNO\.nuget\packages\microsoft.windows.sdk.contracts\10.0.26100.1742\ref\netstandard2.0\Windows.UI.Xaml.Core.Direct.XamlDirectContract.winmd') or sign them to enable side-by-side.`

这只是一个示例,因为与 Microsoft.Windows.SDK.Contracts 相关的其他引用也会发生相同的情况,特别是这些元素,全部来自同一目录:

`Windows.UI.Xaml.Core.Direct.XamlDirectContract.winmd`
`Windows.Storage.Provider.CloudFilesContract.winmd`
`Windows.Security.Isolation.Isolatedwindowsenvironmentcontract.winmd`
`Windows.Networking.Connectivity.WwanContract.winmd`
`Windows.Foundation.UniversalApiContract.winmd`
`Windows.ApplicationModel.Calls.CallsVoipContract.winmd`
`Windows.ApplicationModel.Calls.CallsPhoneContract.winmd`
`Windows.ApplicationModel.Calls.Background.CallsBackgroundContract.winmd`
`Windows.AI.MachineLearning.MachineLearningContract.winmd`

我做了广泛的内部和人工智能研究,以实际找到解决这个问题的方法,但到目前为止还没有成功。

我尝试在 Visual Studio 解决方案中查找操作系统目录中的重复引用,但没有找到任何证据;

我删除了错误中指定的目录中的相应引用,但是删除时,出现了其他错误,因为实际上项目依赖于这些引用;

我尝试在大会上签名;

我下载了该项目,并检查了生成的XML文件,看看是否有重复的文件,并没有发现任何证据;

我卸载了 Visual Studio;

我手动下载了Windows 10 SDK;

我创建了其他项目,实际上没有 1 行代码,以检查它是否可能与脚本相关,并且我通过 NuGet 添加了 Microsoft.Windows.SDK.Contracts 并发生了相同的错误;

我创建了一个虚拟机,只安装了Visual Studio,规格相同,也出现了问题

c# visual-studio dll nuget
1个回答
0
投票

您可以尝试以下步骤:

  1. 针对特定 Windows SDK,如果您的目标是 Windows 10, 然后确保 .csproj 文件有这一行:

    10.0.19041.0
  2. 删除并重新安装 NuGet 包,因为这可能是由于在不同时间安装包而导致的不匹配问题。

  3. 避免混合 SDK 版本

  4. 使用 Dependency Walker 之类的工具来分析依赖关系并找出冲突的程序集来自何处。

© www.soinside.com 2019 - 2024. All rights reserved.