我对 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,规格相同,也出现了问题
您可以尝试以下步骤:
针对特定 Windows SDK,如果您的目标是 Windows 10, 然后确保 .csproj 文件有这一行:
10.0.19041.0删除并重新安装 NuGet 包,因为这可能是由于在不同时间安装包而导致的不匹配问题。
避免混合 SDK 版本
使用 Dependency Walker 之类的工具来分析依赖关系并找出冲突的程序集来自何处。