Msbuild nuget pack的路径中存在非法字符

Msbuild nuget pack的路径中存在非法字符,msbuild,nuget,Msbuild,Nuget,我正在打包一个使用巡航控制的应用程序,命令如下 <Exec Command="$(NugetToolPath) pack &quot;@(NuSpecs)&quot; -OutputDirectory \\servername\PackageSource -BasePath &quot;%(NuSpecs.RootDir)%(NuSpecs.Directory)&quot; -NoPackageAnalysis" /> 我知道这个问题,因为它应该是

我正在打包一个使用巡航控制的应用程序,命令如下

<Exec Command="$(NugetToolPath) pack &quot;@(NuSpecs)&quot; -OutputDirectory \\servername\PackageSource -BasePath &quot;%(NuSpecs.RootDir)%(NuSpecs.Directory)&quot; -NoPackageAnalysis" />
我知道这个问题,因为它应该是

-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" />

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

-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"