Создание пакета NuGet: исключение NU5128 - не ясно, как исправить

У меня есть DLL, обращающаяся к библиотеке .NET 4.7.1.

Возможно, не имеет значения, но он написан на C # и использует пакеты NuGet с использованием шаблона «packages.config», а не более новой конфигурации PackageReference.

Я публикую это как пакет NuGet (делаю это уже несколько лет). Но теперь, когда я выполняю следующее:

nuget pack -Properties Configuration=Release

Я получаю следующее предупреждение:

Ошибка NU5128: некоторые целевые платформы, объявленные в группе зависимостей nuspec и папке lib / ref, не имеют точных совпадений в другом месте. См. Список действий ниже: - Добавьте группу зависимостей для .NETFramework4.7.1 в nuspec

У меня нет ничего в группе зависимостей nuspec:

<?xml version="1.0"?> 
<package >   
    <metadata>
        <id>*******</id>
        <version>*******</version>
        <title>*******</title>
        <authors>*******</authors>
        <owners>*******</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>*******</description>
        <releaseNotes>*******</releaseNotes>
        <copyright>*******</copyright>
        <tags>*******</tags>
   </metadata> 
</package>

Это потребляет следующие пакеты NuGet:

  • Microsoft.AspNet.WebApi.Client v5.2.7
  • Microsoft.AspNet.WebApi.Core v5.2.7
  • Microsoft.CodeAnalysis.FxCopAnalyzers v2.9.8
  • Microsoft.CodeAnalysis.VersionCheckAnalyzer v2.9.8
  • Microsoft.CodeQuality.Analyzers v2.9.8
  • Microsoft.NetCore.Analyzers v2.9.8
  • Microsoft.NetFramework.Analyzers v2.9.8
  • Newtonsoft.Json v12.0.3
  • StyleCop.Analyzers v1.1.118

Когда я смотрю в раздел «Ссылки», я вижу следующее (используется ~ для сокращения пути):

  • Microsoft.CSharp ~ .NETFramework \ v4.7.1 \ Microsoft.CSharp.dll
  • Newtonsoft.Json ~ \ packages \ Newtonsoft.Json.12.0.3 \ lib \ net45 \ Newtonsoft.Json.dll
  • Система ~ \ NETFramework \ v4.7.1 \ System.dll
  • System.Configuration ~ .NETFramework \ v4.7.1 \ System.Configuration.dll
  • System.Core ~ ​​.NETFramework \ v4.7.1 \ System.Core.dll
  • System.Data ~ .NETFramework \ v4.7.1 \ System.Data.dll
  • System.Data.DataSetExtensions ~ .NETFramework \ v4.7.1 \ System.Data.DataSetExtensions.dll
  • System.Net.Http ~ .NETFramework \ v4.7.1 \ System.Net.Http.dll
  • System.Net.Http.Formatting ~ \ packages \ Microsoft.AspNet.WebApi.Client.5.2.7 \ lib \ net45 \ System.Net.Http.Formatting.dll
  • System.Web.Http ~ \ packages \ Microsoft.AspNet.WebApi.Core.5.2.7 \ lib \ net45 \ System.Web.Http.dll
  • System.Xml ~ .NETFramework \ v4.7.1 \ System.Xml.dll
  • System.Xml.Linq ~ .NETFramework \ v4.7.1 \ System.Xml.Linq.dll

На мой взгляд, все выглядит так, как будто оно совместимо с .NET 4.7.1, так почему это предупреждение?

Следуя деталям, приведенным в Предупреждение NuGet NU5128, Поэтому я добавил группу зависимостей:

<?xml version="1.0"?> 
<package >   
    <metadata>
        <id>*******</id>
        <version>*******</version>
        <title>*******</title>
        <authors>*******</authors>
        <owners>*******</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>*******</description>
        <releaseNotes>*******</releaseNotes>
        <copyright>*******</copyright>
        <tags>*******</tags>
        <dependencies>
          <group targetFramework=".NETFramework4.7.1" />
        </dependencies>
   </metadata> 
</package>

Но это ни на что не влияет, я все равно получаю ошибку.


person DrGriff    schedule 16.02.2020    source источник


Ответы (3)


Согласно документу NU5128, это предупреждение было добавлен во время разработки NuGet 5.3 и впервые был доступен в .NET Core SDK 3.0 Preview 9. NuGet / Home # 8583 отслеживает проблему, при которой предупреждение возникало в слишком большом количестве сценариев. Вы можете использовать свойство NoWarn MSBuild (добавить $ (NoWarn); NU5128 в любую PropertyGroup в файле проекта). Если затронуто несколько проектов, можно использовать Directory.Build.targets, чтобы автоматически добавлять NoWarn во все проекты.

Добавить Nowarn в проект

person kartheekp-ms    schedule 16.02.2020

Начиная с Nuget 5.7, это теперь отображается как ошибка Nuget CLI (https://github.com/NuGet/Home/issues/7404). Итак, наш конвейер начал давать сбой, хотя эта ошибка была у нас раньше.

Мы закончили с подходом Nowarn в соответствующих файлах csproj, как описано выше - но я хотел добавить, что это может внезапно вызвать проблемы в уже запущенных конвейерах.

person Linnau    schedule 08.09.2020

Если вы получаете это предупреждение и у вас ничего не работает по адресу справочная страница,

  • Откройте .nupkg как zip-файл.

  • Найдите файл .nuspec и откройте его.

  • В <dependencies> добавьте целевой фреймворк вот так

    <group targetFramework=".NETFramework4.7.2" />
    
  • Сохраните файл (WinZip позволяет делать все это без извлечения и повторного архивирования)

  • Опубликуйте .nupkg еще раз в своем репозитории nuget.

Это раздражает, но это единственное, что у меня сработало.

person Chad Hedgcock    schedule 08.09.2020