Похоже, что если вы создаете веб-приложение, вам нужно только свойство целевой платформы:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
Вы можете удалить все ссылки, определенные в вашем <ItemGroup>
.
Microsoft. NET .Sdk.Web уже неявно ссылается на Microsoft.AspNetCore.App: https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio#framework -reference
Попытка ответить на вопрос по существу:
In. NET Core 3.1, у вас все еще есть «Microsoft.AspNetCore.App», но вам не нужно явно ссылаться на него, как вы сделал в. NET Core 2.1.
И «Microsoft.AspNetCore.App» уменьшился. NET Core 3.x: несколько пакетов были удалены. Поэтому, если вы видите, что некоторые из ранее импортированных вами пространств имен отсутствуют, вам, вероятно, придется получить их через NuGet.
Кстати,
Ошибка с IHostEnvironment
, не содержащим WebRootPath
, была связана с недавним рефакторингом, когда старый IHostingEnvironment
был разделен на 2 интерфейса: IHostEnvironment
и IWebHostEnvironment
. WebRootPath
определяется в IWebHostEnvironment
.