#c# #.net #wpf #.net-core #.net-framework-4.8
#c# #.net #wpf #.net-core #.net-4.8
Вопрос:
Я пытаюсь преобразовать приложение .NET Framework WPF в .NET 5
Я побежал https://github.com/dotnet/try-convert , и удалил некоторые несовместимые ссылки на DLL.
Теперь, когда я пытаюсь скомпилировать, мне предоставляется
NETSDK1135 SupportedOSPlatformVersion 10.0.19041.0 cannot be higher than TargetPlatformVersion 7.0
Есть идеи относительно того, что искать?
Рассматриваемый проект представляет собой комбинацию .NET 5 и .NET Standard 2.1
Ответ №1:
У меня была такая же ошибка несколько часов назад. Я нашел эту статью полезной: https://nicksnettravels.builttoroam.com/net-5-tfms / Насколько я понимаю, targetFramework в файле проекта должен содержать ту же версию Windows, что и контракт SDK. Теперь мой файл проекта выглядит так:
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
<UseWPF>true</UseWPF>
…
<ItemGroup>
<PackageReference Include="Microsoft.Windows.CsWinRT" Version="1.1.0" />
<PackageReference Include="Microsoft.Windows.SDK.Contracts" Version="10.0.19041.1" />
</ItemGroup>
…
Надеюсь, это полезно для вас.
Ответ №2:
Эта проблема появилась на моем конце при добавлении Microsoft.Windows.SDK.Contracts для чтения версии, применяемой при упаковке с использованием пакета MSIX.
Я попробовал использовать решение @RolandJS, но все равно куча ошибок.
Найдено: https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/desktop-to-uwp-enhance
В нем упоминается, что начиная с .NET 5 (или более поздней версии) и целевой Windows 10, версии 1809 или более поздней, Microsoft.Windows.SDK.Contracts больше не требуется. Вместо этого вы должны использовать TargetFrameworkMoniker (TFM).
Как уже упоминалось RolandJS: в изменении файла проекта
<TargetFramework>net5.0-windows</TargetFramework>
например,
<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
Удалите Microsoft.Windows.SDK.Contracts
Комментарии:
1. это было то, что мне было нужно! Спасибо
2. Хотел бы я проголосовать за это 15 раз. Это должно быть ответом!!