Поделиться через


NETSDK1071: Явное указание версии для PackageReference в метапакет, который будет включен в фреймворк.

Эта статья применительно к ✔️ SDK .NET 5.0.100 и более поздним версиям.

Когда пакет SDK для .NET выдает предупреждение NETSDK1071, это указывает на возможный конфликт версий в будущем между версией метапакета, указанной в PackageReference, и версией этого метапакета, на которую сделана неявная ссылка через свойство TargetFramework.

<PropertyGroup>
  <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

Поскольку TargetFramework автоматически предоставляет версию метапакета, версии будут конфликтовать, если они когда-либо будут различаться.

Чтобы устранить эту проблему:

  1. При целевой платформе .NET Core или .NET Standard рекомендуется избегать явных упоминаний Microsoft.NETCore.App или NETStandard.Library в файле вашего проекта.

  2. Если вам нужна определенная версия среды выполнения при нацеливание на .NET Core, используйте <RuntimeFrameworkVersion>свойство вместо ссылки непосредственно на метапакет. Например, это может произойти, если вы используете автономные развертывания и требуется определенное исправление среды выполнения LTS 1.0.0.

  3. Если вам нужна конкретная версия NetStandard.Library при работе с .NET Standard, вы можете использовать свойство <NetStandardImplicitPackageVersion> и установить необходимую версию.

  4. Не добавляйте и не обновляйте явно ссылки на Microsoft.NETCore.App или NETSTandard.Library в проектах .NET Framework. NuGet автоматически устанавливает любую версию NETStandard.Library , необходимую при использовании пакета NuGet на основе .NET Standard.

  5. Не указывайте версию для Microsoft.AspNetCore.App или Microsoft.AspNetCore.All при использовании .NET Core 2.1+, так как комплект SDK для .NET автоматически выбирает соответствующую версию. (Примечание. Это работает только при выборе .NET Core 2.1, если проект также использует Microsoft.NET.Sdk.Web. Эта проблема устранена в пакете SDK для .NET Core 2.2.)

  6. Если вы хотите, чтобы предупреждение ушел, его также можно отключить:

    <PackageReference Include="Microsoft.NetCore.App" Version="2.2.8" >
      <AllowExplicitVersion>true</AllowExplicitVersion>
    </PackageReference>