У меня есть проект, ориентированный на. 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
переменных ? И может ли тот факт, что целевая платформа не указана в моем пакете, иметь негативные последствия для всех, кто использует этот пакет?