Msbuild nuget pack的路径中存在非法字符
我正在打包一个使用巡航控制的应用程序,命令如下Msbuild nuget pack的路径中存在非法字符,msbuild,nuget,Msbuild,Nuget,我正在打包一个使用巡航控制的应用程序,命令如下 <Exec Command="$(NugetToolPath) pack "@(NuSpecs)" -OutputDirectory \\servername\PackageSource -BasePath "%(NuSpecs.RootDir)%(NuSpecs.Directory)" -NoPackageAnalysis" /> 我知道这个问题,因为它应该是
<Exec Command="$(NugetToolPath) pack "@(NuSpecs)" -OutputDirectory \\servername\PackageSource -BasePath "%(NuSpecs.RootDir)%(NuSpecs.Directory)" -NoPackageAnalysis" />
我知道这个问题,因为它应该是
-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" />
只需在目录后和引号字符前插入空格:
-OutputDirectory "\\servername\PackageSource\ "
请参见此处接受的答案(问题本身相关性不高,但答案是):
关于这个问题的另一个答案中也链接了这个迷人的参考:当我们从Jenkins执行
nuget restore
时,我们在从属节点上运行了JNLP代理,出现了这个错误
事实证明,路径中的非法字符中的“Path”表示路径环境变量,在我们的例子中,nuget.exe继承了一个带有引号的路径变量,例如:
Path=C:\Program Files\foo;"C:\Program Files\bar"
Path=C:\ProgramFiles\foo;“C:\Program Files\bar”
如果您使用的是Jenkins,请添加要由Jenkins执行的echo%PATH%
,并检查它是否有任何有趣的字符。是因为路径中有空格吗?您需要转义吗?路径需要隔开,如果-BasePath末尾没有\它会很好地打包应用程序,我需要一种方法来删除.directory元数据结果末尾的\
Path=C:\Program Files\foo;"C:\Program Files\bar"