我正在使用Cruise Control打包应用程序,命令就像这样
<Exec Command="$(NugetToolPath) pack "@(NuSpecs)" -OutputDirectory \\servername\PackageSource -BasePath "%(NuSpecs.RootDir)%(NuSpecs.Directory)" -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 "%(NuSpecs.RootDir)%(NuSpecs.Directory)%(Nuspecs.FileName).nuspec" -OutputDirectory \\servername\PackageSource -NoPackageAnalysis" />
答案 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执行,并检查其中是否包含有趣的字符。