【问题标题】:Auto-add PackageReferences to NuGet package将 PackageReferences 自动添加到 NuGet 包
【发布时间】:2019-11-22 09:33:14
【问题描述】:

在我的项目中,我引用了一些带有PackageReference 的包:

但是,如果我运行 pack 命令,它不会包含它们,除非我手动将它们添加到 .nuspec 文件中。

我想将 C# 项目中 PackageReference 中的包自动添加到 NuGet 包中。

我在构建时使用nuget pack ProjectFile 或手动打包我的项目。

当前具有依赖关系的 nuspec:

附: packages.config 的 AFAIK 引用会自动添加,但我不想使用此文件。我想改用PackageReferences

【问题讨论】:

  • 你如何生成你的 nuget?
  • 添加到描述中。谢谢

标签: c# dependencies package nuget


【解决方案1】:

实际上,您不再需要 .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 ..

它适用于我的情况,无需定义任何依赖项

【讨论】:

  • 谢谢。是否有适用于 csproj 的 NuGet 的所有可用标签的公开列表?
  • 不起作用,我使用 nuget pack 并没有从 csproject 得到任何东西
  • 对不起,当然。它不从 csproj 获取任何信息(为了测试,我将 RequireLicenseAcc. 设置为 true,nuspec 中没有任何变化 + 没有来自 PackageReference 的引用)。
  • 当我以外的人指出不再需要 nuspec 文件时,这很好 :) 关于使用 GeneratePackageOnBuild,这将减慢您的代码构建调试周期,因为它会生成包在每个构建中,即使您不打算推送或测试包。解决方案上的dotnet pack 会将are packable 的解决方案中的所有项目打包。
猜你喜欢
  • 2011-05-05
  • 2019-10-24
  • 2022-01-12
  • 2017-08-10
  • 1970-01-01
  • 2016-05-12
  • 2016-11-14
  • 1970-01-01
  • 2018-12-28
相关资源
最近更新 更多