#c# #winforms #.net-core #migration #.net-5
#c# #winforms #.net-ядро #миграция #.net-5
Вопрос:
Я переношу приложение winform с net core 3.1 на net 5 и получаю следующую ошибку.
Описание кода серьезности Ошибка состояния подавления строки файла проекта NETSDK1136 Для целевой платформы должна быть установлена Windows (обычно путем включения ‘-windows’ в свойство targetFramework) при использовании Windows Forms или WPF или ссылки на проекты или пакеты, которые это делают. PublicOutput.core C:Program Filesdotnetsdk5.0.100SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.DefaultItems.targets 369
Это раздел Microsofts.net.sdk.DefaultItems.targets, на которые это ссылается.
<Target Name="_CheckForInvalidWindowsDesktopTargetingConfiguration"
BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '5.0')) and ('$(UseWindowsForms)' == 'true' or '$(UseWPF)' == 'true')">
<NETSdkError Condition="'$(TargetPlatformIdentifier)' != 'Windows'"
ResourceName="WindowsDesktopTargetPlatformMustBeWindows" >
Я не понимаю ошибки, и ссылка, по которой мне отправляется ошибка, не помогает
Для моей целевой среды установлено следующее:
<TargetFramework>net5.0</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
любая помощь будет оценена
Комментарии:
1. «обычно путем включения ‘-windows’ в свойство targetFramework» … так вы это сделали?
2. Постскриптум developercommunity.visualstudio.com/content/problem/1218104 /… — какую версию .NET 5 вы используете? В нем упоминается WPF, но, похоже, аналогичная проблема
3. «У меня установлена моя целевая среда на следующее
<TargetFramework>net5.0</TargetFramework>
» .. ок, так что ясно, что флаг не включает-windows
, не так ли? См . thomasclaudiushuber.com/2020/03/26 /… где в нем упоминаетсяnet5.0-windows
4. В качестве альтернативы, nicksnettravels.builttoroam.com/net-5-tfms может быть, это поможет вам
5. Я уже видел это — прочитайте мои последние 2 комментария выше.
Ответ №1:
Ошибка очевидна:
Целевая платформа должна быть установлена на Windows (обычно путем включения ‘-windows‘ в свойство targetFramework) при использовании Windows Forms или WPF,
так что измените <TargetFramework>net5.0</TargetFramework>
<TargetFramework>net5.0-windows</TargetFramework>
, как написано в документах
Комментарии:
1. NETSDK1005: в файле ресурсов отсутствует цель «.net5.0-windows».
2. @JokeHuang убедитесь, что вы используете стабильный 16.9, удалите папку obj и выполните восстановление nuget
Ответ №2:
Это может произойти, если вы предоставляете общий доступ к проекту в среде DevOps, такой как Azure.
Чтобы понять причину этой проблемы, я попытался собрать каждый отдельный проект один за другим и понял, что один из моих товарищей по команде добавил новый проект WinForm в наш проект API
файл .csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) and '$(MSBuildRuntimeType)' == 'Full'">$(TargetFrameworks);net6.0-windows</TargetFrameworks>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
Я использовал Mac, поэтому не мог создавать.
Включение ‘-windows’ в свойство targetFramework в этом случае не поможет.
Я просто выгрузил этот проект из решения, а затем смог снова перестроить его без ошибок.
Ответ №3:
Измените целевую платформу на правильную версию в свойствах проекта.
Комментарии:
1. Вы не должны писать вопрос как ответ!! Запишите это как комментарий.