我在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,但我无法设法让它发挥作用。
答案 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/