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

Mic*_*iel 16 tfsbuild msdeploy tfs2010

作为构建过程的一部分,我们使用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;, DeploymentParameters}}]" FileName="[String.Format(&quot;{0}\Packages\{1}\{2} {3}\{4}.deploy.cmd&quot;, BuildDetail.DropLocation, platform.Configuration, ApplicationName, VersionString, DeploymentPackageName)]" sap:VirtualizedContainerService.HintSize="464,420" Result="[ExitCode]">
Run Code Online (Sandbox Code Playgroud)

Jim*_*mmy 19

这是SP1版本中引入的错误.您可以通过编辑来处理它%ProgramFiles(x86)%\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(注意64位路径).更改行3238-3258以匹配旧deploy.cmd文件中的相应内容; 差异应该只有3行,删除_ArgCurrentOriginal并使用_ArgCurrent.

最近还发布了一个关于该问题的KB:http://support.microsoft.com/kb/2537134.这包括更新的.targets文件,因此您无需自己进行编辑.

  • VS 2012和WebDeploy v3的错误仍然存​​在!这太荒谬了. (2认同)