Msbuild WIX设置中的配置转换

Msbuild WIX设置中的配置转换,msbuild,web-config,wix,installation,configuration-files,Msbuild,Web Config,Wix,Installation,Configuration Files,我正在用WIX为我的Web应用程序创建一个MSI设置。这是正确的。我唯一没有做的就是启用标准web应用程序发布方法的配置转换 我知道您可以为现有目标文件添加using标记。我试图将TransformXml添加到WIX安装程序项目文件中的后构建目标中,但这不起作用 <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="Web.Config" /> 有人能帮我吗

我正在用WIX为我的Web应用程序创建一个MSI设置。这是正确的。我唯一没有做的就是启用标准web应用程序发布方法的配置转换

我知道您可以为现有目标文件添加using标记。我试图将
TransformXml
添加到WIX安装程序项目文件中的后构建目标中,但这不起作用

<TransformXml Source="Web.Config" Transform="Web.$(Configuration).config" Destination="Web.Config" />

有人能帮我吗


我为此创建了一个名为

的测试项目,在您的示例项目中没有提到TransformXml

您需要类似于以下内容的代码:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile">
  <CallTarget Targets="TransformWebConfiguration" Condition="Exists('web.$(Configuration).config')"/>
</Target>

<Target Name="TransformWebConfiguration">
  <!-- Generate transformed web configuration -->
  <TransformXml Source="web.config" Destination="web.transformed.config" Transform="web.$(Configuration).config" />
</Target>

需要注意的几点:

  • 检查UsingTask元素中指向Microsoft.Web.Publishing.Tasks.dll的路径(针对您的Visual Studio版本进行更改)
  • 在您的示例中,源和目标是相同的;您应该确保目标文件是不同的文件,这样就不会出现文件锁定问题,也不会用转换后的文件覆盖您尝试转换的web.config
  • 在VisualStudio2010中,TransformXml存在文件锁定问题,因此如果使用2010,请小心