Зависимости NuGet - получение предупреждения NU5128 при указании targetFramework - PullRequest
0 голосов
/ 14 июля 2020

У меня есть проект, ориентированный на. NET Framework 4. Я использую nuget.exe (версия 5.6.0.6591) для создания пакета NuGet. Сам проект не имеет других ссылок, кроме Microsoft.CSharp и System сборок (ни одна из них не имеет определенной c версии).

Сначала я создал файл MyProject.nuspec (запустив nuget spec в папке MyProject.csproj). Затем я попробовал запустить nuget pack MyProject.csproj и получил пакет NuGet (архив .nupkg). Но я также получил это предупреждение:

WARNING: NU5128: Some target frameworks declared in the dependencies group of the nuspec and the lib/ref folder do not have exact matches in the other location. Consult the list of actions below:
- Add a dependency group for .NETFramework4.0 to the nuspec

Согласно https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu5128, я изменил свой файл .nuspec так, чтобы теперь он выглядел так (обратите внимание на тег <dependencies> ):

<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
    <releaseNotes></releaseNotes>
    <copyright>Copyright 2020</copyright>
    <tags>my tags here</tags>
    <dependencies>
      <group targetFramework=".NETFramework4.0" />
    </dependencies>
  </metadata>
</package>

Однако я все еще получаю предупреждение. И когда я открываю файл .nuspec в сгенерированном .nupkg архиве, там есть только пустой тег <dependencies />.

Я нашел один обходной путь - заменить переменные в файле .nuspec и вызвать nuget pack MyProject.nuspec вместо nuget pack MyProject.csproj. Затем я получаю тот же файл .nuspec, включая зависимость целевой платформы, в моем итоговом архиве .nupkg. Но это лишает меня возможности nuget автоматически заполнять версию для меня.

В любом случае, когда я запускаю nuget pack с -Verbosity detailed, я вижу, что Dependendecies пусты:

Id: MyId
Version: 1.0.0
Authors: Me
Description: My description
Tags: my, tags, here
Dependencies:

Кажется, что когда я вызываю nuget pack на .csproj, он заполняет переменные, но также удаляет зависимости, поскольку считает их пустыми, но потом выдает мне предупреждение. Если я вызываю nuget pack на .nuspec, он упаковывает его как есть, включая зависимости, тем самым избегая предупреждения.

Есть идеи, как я могу разрешить предупреждение при заполнении nuget переменных ? И может ли тот факт, что целевая платформа не указана в моем пакете, иметь негативные последствия для всех, кто использует этот пакет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...