从'nuget pack'命令中检索创建的NuGet包文件名?

时间:2013-06-21 21:01:42

标签: nuget

我正在编写一个脚本,它会自动将Nuget文件打包并发布到我的私有存储库(文件共享)和私有符号服务器(在localhost上)。

当我在Powershell中运行nuget pack时,我得到一个字符串输出,其中包含nuget和symbol包的文件位置,但据我所知,没有办法以编程方式在不解析字符串的情况下获取这些路径。包版本由.csproj本身确定,因此我不一定知道将在文件名中放置哪个版本。

这是pack命令的输出:

Attempting to build package from 'MyProject.csproj'.
Building project 'C:\Users\me\prg\MyProject.csproj' for target framework '.NETFramework,Version=v4.0'.
Packing files from 'C:\Users\me\prg\bin\Release'.
Using 'Myproject.nuspec' for metadata.
Successfully created package 'C:\nuget\MyProject.1.0.0.0.nupkg'.

Attempting to build symbols package for 'MyProject.csproj'.
Building project 'C:\Users\me\prg\MyProject.csproj' for target framework '.NETFramework,Version=v4.0'.
Packing files from 'C:\Users\me\prg\bin\Release'.
Using 'MyProject.nuspec' for metadata.
Successfully created package 'C:\nuget\Myproject.1.0.0.0.symbols.nupkg'.

我是否应该咬紧牙关写一些正则表达式来解析“成功创建的包”行?

2 个答案:

答案 0 :(得分:4)

默认情况下,nuget pack会将创建的包输出到当前目录。您可以通过指定OutputDirectory选项来覆盖它。我不清楚你运行nuget命令的位置(来自 C:\ Users \ me \ prg \ C:\ nuget \ ,或其他地方),所以你可能已经知道这一点,但它可以为你提供另一种选择:

您可以创建一个临时目录(例如 C:\ nuget \ temp \ ),您可以将其指定为OutputDirectory选项。如果您在脚本中确保在运行nuget pack之前该目录为空,则只需将* .nupkg 复制到您的文件共享(然后将其移至 C :\ nuget \ ,如果需要的话。)

答案 1 :(得分:1)

在powershell中解析输出并不太难。

$a = nuget pack .\Exceptional.csproj -Prop Configuration=Release |  Select-String nupkg
$a -Replace "^[^']'", "" -Replace "'[^']$", ""

给出

  

C:\ Users \用户费伦\工作空间\特殊\特殊\ Weingartner.Exceptional.1.2.6011.19372.nupkg