3

我有一个非常简单的场景,ASP.NET MVC4 网站。我使用 VS2012 的发布功能来生成 web 部署包。这会生成一堆文件,一个 .zip、一些 .xml 和一个 xxx.deploy.cmd 文件。

我像往常一样使用以下命令运行 deploy.cmd 文件:

MVCTestApp.deploy.cmd /Y -enableRule:DoNotDeleteRule

从包含空格的程序文件的子文件夹运行时(例如 C:\Program Files (x86)\Folder With Spaces\TestApp),此命令失败并出现错误

\文件夹此时出乎意料。

问题显然在于 _DeploySetParametersFile 参数的处理,但我不能只修复 .cmd 文件,因为它是在每次发布时生成的。

有没有人有解决方法?

4

2 回答 2

3

对我来说,这个问题与下面的链接有关(我试图让它在詹金斯工作):

https://issues.jenkins-ci.org/browse/JENKINS-11992?focusedCommentId=201790#comment-201790

我通过使用目录的缩短版本解决了这个问题。您可以通过键入 dir /x 来了解它们是什么。

我的构建命令最终看起来像这样:

MSBuild c:\PROGRA~2\Jenkins\jobs\REPVIE~1\workspace\Builder\RepView\RepView.csproj /p:DeployOnBuild=true /p:PublishProfile=JenkinsDeployment

我的部署命令最终看起来像这样:

c:\PROGRA~2\Jenkins\jobs\REPVIE~1\workspace\Builder\RepView\obj\Debug\Package\RepView.deploy.cmd /y /M:http://<target-address> /u:<username> /p:<password>

由于生成了 deploy.cmd 文件,因此在调用 MSBuild 时使用目录的缩短名称可以解决此问题。只是不要使用任何带空格的路径,它应该适合你。

于 2014-05-23T16:59:10.920 回答
1

如果这是导致问题的原因,您可能需要在调用 .cmd 之前设置 _DeploySetParametersFile 参数的值。创建另一个静态批处理文件,您将使用它来执行此操作。

首先,使用转义空格设置参数的值,然后从其位置调用 cmd。每次需要部署应用程序时使用此批处理文件。完整内容:

@if %_echo%!==! echo off
setlocal
set _DeploySetParametersFile=C:\Program^ Files^ (x86)\Folder^ With^ Spaces\TestApp\xxx.SetParameters.xml
"C:\Program Files (x86)\Folder With Spaces\TestApp\xxx.Deploy.cmd"

调用类似的文件mydeploy.cmd并从命令行调用它,以便您可以回复任何错误而不是立即关闭窗口。

于 2013-07-05T09:09:39.797 回答