Я пытаюсь изучить и понять nuget и msbuild в .NET Core, изучая и редактируя файлы проекта вручную (.csproj в .NET Core 2.2).
Поэтому, когда я создаю проект WebApi, файл .csproj выглядит следующим образом:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
</ItemGroup>
</Project>
Обратите внимание, что для первого PackageReference
не указан атрибут Version.
Теперь, если я укажу последнюю стабильную версию 2.2.3, вот так:
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.3" />
Я получаю предупреждение о сборке NETSDK1071, которое гласит:
PackageReference для «Microsoft.AspNetCore.App» указал версию
2.2.3
. Указывать версию этого пакета не рекомендуется.
Для получения дополнительной информации см. https://aka.ms/sdkimplicitrefs
Это предупреждение не отображается, если атрибут Version отсутствует, поэтому мне было интересно, как разрешается версия пакета nuget, если он не установлен явно?
Кроме того, как dotnet build
знает, какая версия пакета nuget рекомендуется с текущими настройками проекта?