如何使用dotnet pack为.net core创建nuget包

时间:2018-04-10 07:55:12

标签: .net-core nuget

将所有依赖项添加到包中。

我尝试了多种方法,但看起来我可能不得不弄乱它,因为依赖项的解析方式,添加一个nuspec文件是不够的。

要把它放到透视图中如果我打包一个.net框架项目带有一个nuspec文件,并且在文件中指向一个构建的相关输出文件夹(例如bin \ release)我需要的一切。

我的用例是在CI管道中运行一些验收测试(在流程外)。此时我不想访问源代码控制。

2 个答案:

答案 0 :(得分:3)

查看NuGet.Build.Tasks.Pack

如果您在NuGet.Build.Tasks.Pack引用,则可以使用.nuspec文件打包项目。我已经完成了这项工作,将我的解决方案中的多个项目汇总到一个nuget包中。

您可以使用dotnet.exe打包:

dotnet pack <path to .csproj file> /p:NuspecFile=<path to nuspec file> /p:NuspecProperties=<> /p:NuspecBasePath=<Base path>

或MSBuild:

msbuild /t:pack <path to .csproj file> /p:NuspecFile=<path to nuspec file> /p:NuspecProperties=<> /p:NuspecBasePath=<Base path>

更多细节可以在这里找到: https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets#packing-using-a-nuspec

答案 1 :(得分:0)

好的,所以这不是一个特别不寻常的用例,但.NET framework nuget包装没有仪式。

所以我正在部署一个包,它包含一些测试程序集以及Nunit控制台运行程序成功执行所需的所有相关依赖项(程序集和appsettings文件)

我们提出的解决方案是使用DotNetCorePublishOctoPack(为了方便而不是nuget pack)

所以DotNetCorePublish协调所有第三方依赖项并创建一个文件夹(默认情况下名为publish),其中包含执行任何测试所需的所有内容(因此这是我已经学过的Framework dependent部署)

然后将OctoPack配置为指向我们要打包的内容。因此,将其设置为相关文件夹(使用相关的通配符/ globs)可以获取我们需要的所有内容。即时创建nuspec文件,用于创建Nuget包。