自动将PackageReference中的引用添加到包中的NuGet包

时间:2019-07-12 15:26:31

标签: c# nuget

在我的项目中,我使用PackageReference引用了一些软件包。

My PackageReference

但是,如果我将此项目打包到一个NuGet包中,则在我手动将它们添加到.nuspec文件中之前,它不会包含它们。

What I don't want to add to .nuspec

我不想手动添加所有依赖项,尤其是每次在.nuspec中都进行更新。是否可以自动执行此操作?

我在Build上使用nuget pack ProjectFile或手动将项目打包到NuGet包中,然后我没有指定ProjectFile。 我的 CURRENT NuSpec (具有依赖项)

NuSpec with dependencies

如果我将其不带任何依赖关系的文件打包在NuSpec中,它将在程序包的.nuspec文件中(在.nupkg中)生成一个空的自关闭依赖关系标签:<dependencies />

来自packages.config

AFAIK引用会自动添加,但我不想使用此文件。我改用PackageReferences

1 个答案:

答案 0 :(得分:3)

实际上,您不再需要.nuspec文件。您可以在csproj文件中指定的所有信息,例如:

<PropertyGroup>
    <TargetFrameworks>netstandard2.0</TargetFrameworks>
    <PackageId>BinaryTree</PackageId>
    <Version>5.1.0.0</Version>
    <Authors>RMarusyk</Authors>
    <Description>Simple Binary Tree implementation</Description>
    <PackageProjectUrl>https://github.com/Marusyk/BinaryTree</PackageProjectUrl>
    <PackageTags>binarytree</PackageTags>
</PropertyGroup>

然后将这一行添加到csproj中。

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

要构建它,我使用:

dotnet build -c Release src/Solution.sln
dotnet pack -c Release src/Solution.sln
dotnet nuget push ..

在我的情况下,它无需定义任何依赖项即可工作