Прямая ссылка на компонент метаданных Windows при ориентации на .NET 5 или выше не поддерживается

#c# #.net #.net-core #.net-5 #.net-6.0

#c# #.net #.net-ядро #.net-5 #.net-6.0

Вопрос:

У меня есть .Net5.0 проект библиотеки классов C#, он создавался просто отлично, однако после изменения целевой платформы lt;TargetFrameworkgt;net6.0lt;/TargetFrameworkgt; сборка начинает сбоить со следующими сообщениями об ошибках:

 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.AI.MachineLearning.MachineLearningContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.AI.MachineLearning.Preview.MachineLearningPreviewContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Activation.ActivatedEventsContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Activation.ActivationCameraSettingsContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Activation.ContactActivatedEventsContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Calls.Background.CallsBackgroundContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Calls.CallsPhoneContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Calls.CallsVoipContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Calls.LockScreenCallContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.FullTrustAppContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Preview.Notes.PreviewNotesContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Resources.Management.ResourceIndexerContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Search.Core.SearchCoreContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 C:Program Filesdotnetsdk6.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.targets(1003,5): error NETSDK1130: Windows.ApplicationModel.Search.SearchContract.winmd cannot be referenced. Referencing a Windows Metadata component directly when targeting .NET 5 or higher is not supported. For more information, see https://aka.ms/netsdk1130 ...  

Теперь даже после возврата конфигурации обратно lt;TargetFrameworkgt;net5.0lt;/TargetFrameworkgt; проблема сохраняется. Пожалуйста, обратите внимание, что я использую Visual Studio 2019 с уже установленным SDK .Net6.0. Вот csproj файл:

 lt;Project Sdk="Microsoft.NET.Sdk"gt;   lt;PropertyGroupgt;  lt;TargetFrameworkgt;net6.0lt;/TargetFrameworkgt;  lt;/PropertyGroupgt;   lt;ItemGroupgt;  lt;PackageReference Include="Ben.Demystifier" Version="0.1.4" /gt;  lt;PackageReference Include="BundlerMinifier.Core" Version="3.2.449" /gt;  lt;PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.6.1" /gt;  lt;PackageReference Include="Microsoft.AspNetCore.App" /gt;  lt;PackageReference Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Version="2.1.1" /gt;  lt;PackageReference Include="Microsoft.Identity.Client" Version="4.30.1" /gt;  lt;PackageReference Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="4.5.0" /gt;  lt;PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" /gt;  lt;PackageReference Include="Newtonsoft.Json" Version="12.0.1" /gt;  lt;PackageReference Include="System.Runtime.Serialization.Formatters" Version="4.3.0" /gt;  lt;PackageReference Include="Synergix.WE.ComputerManagement" Version="2.4.34" /gt;  lt;/ItemGroupgt;   lt;ItemGroupgt;  

Обновить:

Пакет lt;PackageReference Include="Synergix.WE.ComputerManagement" Version="2.4.34" /gt; построен с использованием .netStandard2.1 , при удалении его из ссылок ошибка исчезла, но, конечно, сборка завершается неудачно из-за внутренних отклонений, невозможно ли ссылаться на .netStandard библиотеку в .net6 проекте?

Ответ №1:

Решение:

1 — Установите целевую структуру на lt;TargetFrameworkgt;net6.0-windows$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))lt;/TargetFrameworkgt;

2 — Добавьте ссылку на пакет CsWinRT через lt;PackageReference Include="Microsoft.Windows.CsWinRT" Version="1.4.1" /gt;