Приложения ASP.NET Core должны использовать веб-SDK. Если вы создадите новый проект ASP.NET Core MVC, а затем проверьте файл проекта, вы увидите, что он имеет Sdk="Microsoft.NET.Sdk.Web"
. Если у вас просто написано Microsoft.NET.Sdk
, вы можете изменить его.
Если вы не используете веб-SDK по уважительной причине (например, ваш проект - это библиотека классов, а не приложение / exe)), а затем, учитывая номер версии, на которую он жалуется, ясно, что вы используете .NET Core 3.0. В версии 3.0 и выше библиотеки фреймворка больше не распространяются как пакеты NuGet, а вместо этого используют новый элемент FrameworkReference
MSBuild без версии. Когда все нацелено на .NET Core 3.0 и выше, многие проблемы с версиями пакетов исчезнут.
В любом случае, на странице документов ASP.NET есть хороший пример на странице для миграции с2,2 до 3,0. Также немного больше информации о FrameworkReference
.
Вот пример, который мне нравится, показывает разницу между 3.0 и более ранними версиями:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netcoreapp3.0;netstandard2.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.0" />
</ItemGroup>
</Project>