15

我正在使用 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" />
4

3 回答 3

18

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

-OutputDirectory "\\servername\PackageSource\ " 

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

如何接受以反斜杠结尾的命令行参数

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

于 2013-11-21T18:12:06.753 回答
2

当我们nuget restore从 Jenkins 执行时,我们遇到了这个错误,我们在从节点上运行了一个 JNLP 代理。

原来,“Path”是Illegal characters in path指 PATH 环境变量,在我们的例子中,nuget.exe 继承了一个包含引号的 PATH 变量,例如:

路径=C:\Program Files\foo;"C:\Program Files\bar"

如果您使用的是 Jenkins,请添加echo %PATH%以由 Jenkins 在某处执行,并检查它是否有任何有趣的字符。

于 2019-08-28T15:26:44.413 回答
0

我遇到了这个问题,错误消息并没有太大帮助——它没有打印出有问题的行或路径。我不得不取出我怀疑问题可能存在的配置片段,直到我可以到达有问题的行(删除有问题的行允许构建通过)。

原来有问题的行有一个空白的变量(我使用Message任务打印出来)。从那里,我能够将变量设置为我的项目所期望的。

于 2021-12-03T16:34:23.263 回答