问题描述
想象以下情况:
项目 A 有一些 NuGet 依赖项(即项目 Z、项目 Y 和项目 X)。它使用 packagereferences。
现在我想使用 .nuspec 文件将项目 A 打包为 .nupkg。在 .nuspec 文件中,您可以声明其他 NuGet 依赖项,它们将在安装时自动解析。
但这有必要吗?我认为 packagereferences 已经解决了它们。
解决方法
当您在项目中使用 PackageReference
项时,您不再需要 .nuspec
文件来打包项目。您应该可以使用 dotnet pack -c Release
或 msbuild.exe -t:Pack -p:Configuration=Release
打包它。 (根据项目类型,您可能需要为非基于 SDK 的 .NET Framework 项目安装 NuGet.Build.Tasks.Pack
。.NET Standard、Core、.NET 5+ 项目不需要这个)
您仍然可以使用 .nuspec 文件,方法是在 csproj 中指定一个 NuspecFile
属性来指示 pack 任务使用它。但是,它将覆盖 NuGet 将自动生成的所有设置 - 这是获得对 .nuspec
的完全控制权的权衡。
如果您使用 PackageReference
打包项目,您可以查看生成的 .nuspec
文件,例如obj\Release\FooLib.1.0.0.nuspec
。