2017-04-03 34 views
1

我在TFS 2017中添加了新的构建步骤,将我的DLL打包到nuspec中(NuGet Packager)。 我的问题是我无法设置目标文件夹。如何设置TFS NuGet Packager目标文件夹?

的“包文件夹”的描述是

文件夹,包将被创建。如果为空,则会在csproj或nuspec文件旁创建包 。

enter image description here

当我离开这个字段为空我希望它在创建“$/MyProject的/通用/”作为在信息描述。但它一直在构建器代理根文件夹中创建它。并添加“-OutputDirectory”C:_work \ 24 \ s“”,即使我正在写包文件夹中的另一个文件夹。

我在做什么? 是否有更好的方式来打包并发布每个版本的TFS版本的nuget?

的NuGet打包日志:要放包

2017-04-02T15:01:51.3457383Z Set workingFolder to default: C:\agent\tasks\NuGetPackager\0.1.72 
2017-04-02T15:01:51.3769893Z Executing the powershell script: C:\agent\tasks\NuGetPackager\0.1.72\NuGetPackager.ps1 
2017-04-02T15:01:51.6426327Z C:\agent\agent\worker\tools\NuGet.exe pack "C:\_work\24\s\Common\Common.nuspec" -OutputDirectory "C:\_work\24\s" -version 1.0.17092.08 
2017-04-02T15:01:52.0332823Z Attempting to build package from 'Common.nuspec'. 
2017-04-02T15:01:52.1895494Z Successfully created package 'C:\_work\24\s\Common.1.0.17092.08.nupkg'. 

回答

2

只要指定的文件夹。

Package Folder

指定要放包的文件夹。您可以使用 变量如$(Build.StagingDirectory)\packages

enter image description here


更新

当你离开的文件夹为空,它将outputdir =制造商代理的根文件夹的自动AddParameter。当你进入$/MyProject/Common它将在builder agent root folder/$/MyProject/Common

enter image description here

创建文件夹底座据位于PowerShell脚本在C:\agent\tasks\NuGetPackager\xxx\NuGetPackager.ps1

$argsPack = "pack `"$fileToPackage`" -OutputDirectory `"$outputdir`" -Properties $buildProps"; 

所以它一定会把它在代理根文件夹。回到说明:

如果你离开它空,包将包含的.csproj或.nuspec文件相同 目录中创建。

不知道相同的目录手段是同一个文件夹级别与否。但似乎意味着相同的文件夹级别。

你可以提交一个bug在GITHub-VSTS TasksDevelop Community-Team Services都会得到TFS开发团队的快速响应。

+0

最终我确实设法直接使用包文件夹路径和服务器路径,如$/MyProject/Common。 但问题是,当我把它留空它总是把它放在代理根文件夹中。例如,我的nuspec路径是直接使用带有服务器路径的包文件夹路径,例如$/MyProject/Common/dir_a/dir_b/mynu.nuspec - > nupkg将在“$”(C: _work),而不是按照预期在“$/MyProject/Common/dir_a/dir_b”中。 –

+1

@AviramFireberger通过更多的细节,得到了和你一样的结果。不确定相同的目录是否是相同的文件夹级别。建议您在github中提交错误报告或开发社区。更多详情请参阅我的更新回复。 –

+0

太好了,谢谢你的详细回答 –

相关问题