nuget pack路径中的非法字符

时间:2013-06-26 13:57:48

标签: msbuild nuget

我正在使用Cruise Control打包应用程序,命令就像这样

<Exec Command="$(NugetToolPath) pack &quot;@(NuSpecs)&quot; -OutputDirectory \\servername\PackageSource -BasePath &quot;%(NuSpecs.RootDir)%(NuSpecs.Directory)&quot; -NoPackageAnalysis" />

我将错误缩小为它出现的BasePath

-BasePath "D:\Code\Mobile_Trunk\PreCompiledWeb\Portal\Mobile LT Admin\"

我知道这个问题,因为它应该是

-BasePath "D:\Code\Mobile_Trunk\PreCompiledWeb\Portal\Mobile LT Admin"

但是因为我正在使用.Directory元数据,所以它总是以最后的

返回

我通常不会引用基本路径,但由于目录中有空格,我别无选择。有没有解决的办法?我不知道任何其他元数据将返回完整的文件夹结构,而不是我如何将其布局

更新:

我来到这个解决方案,它仍然没有帮助我知道如何解决非法路径的问题,但它的确有效。

<Exec Command="$(NugetToolPath) pack &quot;%(NuSpecs.RootDir)%(NuSpecs.Directory)%(Nuspecs.FileName).nuspec&quot; -OutputDirectory \\servername\PackageSource  -NoPackageAnalysis" />

2 个答案:

答案 0 :(得分:19)

只需在目录后面和引号字符前面插入一个空格:

-OutputDirectory "\\servername\PackageSource\ " 

请参阅此处接受的答案(问题本身并不高度相关,但答案是:)

How to accept command-line args ending in backslash

这个引人入胜的参考文献也与该问题的另一个答案有关:
http://www.daviddeley.com/autohotkey/parameters/parameters.htm#WINCRULESDOC

答案 1 :(得分:0)

当我们从詹金斯执行nuget restore时,我们在从属节点上运行JNLP代理时遇到了此错误。

证明Illegal characters in path中的“ Path”表示PATH环境变量,在我们的示例中nuget.exe继承了其中带有引号的PATH变量,例如:

Path=C:\Program Files\foo;"C:\Program Files\bar"

如果您使用的是Jenkins,请添加echo %PATH%由Jenkins执行,并检查其中是否包含有趣的字符。