Какая версия пакета nuget по умолчанию используется при упоминании PackageReference в проекте .NET Core? - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь изучить и понять 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 рекомендуется с текущими настройками проекта?

1 Ответ

0 голосов
/ 16 марта 2019

По ссылке в предупреждении вы можете узнать, что это не обычный пакет, а Meta-пакет.

Это означает, что этот пакет зависит от вашего TargetFramework, и это означает, что когда вы ориентируетесь на конкретную платформу, установленную на вашем компьютере (как SDK), пакет будет взят из определенного SDK.

...