小编Mic*_*iel的帖子

MSDeploy批处理文件不再处理引号

作为构建过程的一部分,我们使用MSDeploy部署Web应用程序.这种方法在几个星期前就完美了(我想我们将构建/ TFS服务器更新到TFS 2010的SP1时).

在我们的构建定义中,有一个调用进程的步骤.此过程将调用生成的deploy.cmd文件并传入一些其他参数.这很好用了很长时间,但现在我们得到了这个:

错误:无法识别的参数'"-skip:objectName = filePath,absolutePath =.*cmsservices.config"'.所有参数必须以" - "开头.

如帮助中所述,我们使用引号传递其他参数:

WebApplication.deploy.cmd/Y/M:sv-ad-iis02 -allowUntrusted"-skip:objectName = filePath,absolutePath =.*cmsservices.config"" - skip:objectName = filePath,absolutePath =.*servicemodel.client.config ""-skip:objectName = dirPath,absolutePath = app_data"

但是,这个技巧不再适用.删除引号也将删除任何字符,如=和,将替换为空格.

我将其追溯(通过将旧的deploy.cmd与新版本进行比较)到此行:

第76行:

@rem Any addition flags, pass through to the msdeploy
set _ArgMsDeployAdditionalFlags=%_ArgMsDeployAdditionalFlags% %_ArgCurrentOriginal%
Run Code Online (Sandbox Code Playgroud)

在之前的版本中,这是:

@rem Any addition flags, pass through to the msdeploy
set _ArgMsDeployAdditionalFlags=%_ArgMsDeployAdditionalFlags% %_ArgCurrent%
Run Code Online (Sandbox Code Playgroud)

_ArgCurrentOriginal使用%1而不是%~1,如果我更改此代码,它将再次起作用.但是每次都会自动生成deploy.cmd文件(至少它看起来像)

任何线索为什么这已经改变以及如何处理这个?


更新; 我通过使用环境变量来传递这些值来解决这个问题.它仍然无法解决新的deploy.cmd文件以不同方式转义引号的问题.

我现在放在部署流程工作流程中的解决方案:

<mtbwa:InvokeProcess Arguments="[String.Format(&quot;/Y /M:{0} -allowUntrusted&quot;, DeploymentServerName)]" DisplayName="Deploy selected Web Application using MSDeploy" EnvironmentVariables="[New Dictionary(Of String, String) From {{&quot;_MsDeployAdditionalFlags&quot;, …
Run Code Online (Sandbox Code Playgroud)

tfsbuild msdeploy tfs2010

16
推荐指数
1
解决办法
3612
查看次数

标签 统计

msdeploy ×1

tfs2010 ×1

tfsbuild ×1