我正在编写一个脚本,它会自动将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'.
我是否应该咬紧牙关写一些正则表达式来解析“成功创建的包”行?
答案 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