如何在VS发布配置文件和MSDeploy SetParameters.xml之间共享参数配置?

时间:2016-04-09 09:05:34

标签: visual-studio-2012 msbuild msdeploy webdeploy

我在Visual Studio 2012中有一个Web应用程序。我使用发布配置文件(.pubxml)将此网站发布到IIS。

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <MSDeployServiceURL>server</MSDeployServiceURL>
    <DeployIisAppPath>site</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <UserName>domain\username</UserName>
  </PropertyGroup>
  <ItemGroup>
    <MSDeployParameterValue Include="MyParam">
      <ParameterValue>MyValue</ParameterValue>
    </MSDeployParameterValue>
    ...
  </ItemGroup>
</Project>

除了我设置CI以使用msbuild构建一个包,然后使用它来使用msdeploy发布到不同的环境。两者都是分开的步骤,所以我可以多次重复使用同一个包。 为此,我需要使用一个SetParameters.xml,其语法与VS使用的发布配置文件不同。

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  <setParameter name="IIS Web Application Name" value="site" />
  <setParameter name="MyParam" value="MyValue" />
  ...
</parameters>

有没有办法在单个文件中共享参数配置,所以我只能维护一个文件? 我从2014年开始看到this answers,但我无法设法让它发挥作用。

1 个答案:

答案 0 :(得分:0)

我研究了这个,并且在通过VisualStudio发布时找不到覆盖SetParameters文件的方法。它看起来不像MSBuild任务支持这一点。

我可以提供的最佳选择是使用命令行而不是右键单击发布。您可以通过调用Package target:

来创建MSDeploy包
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild /t:Package /p:PublishProfile=<profile-name>

然后使用MSDeploy.exe进行部署:

"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package=WebApplication7.zip -dest:manifest=WebApplication7.DestManifest.xml -setParamFile:SetParameters.custom.xml

以下博客文章包含更多详细信息:

https://dotnetcatch.com/2016/02/25/the-anatomy-of-a-webdeploy-package/