2

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

我了解您可以为现有目标文件添加 using 标签。我尝试将其添加TransformXml到 WIX 安装程序的项目文件中的 AfterBuild 目标,但这不起作用。

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

有人能帮我吗?

我为此创建了一个名为WebApplicationWix的测试项目

4

1 回答 1

2

我在您的示例项目中没有看到任何关于 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>

需要注意的几点:

  1. 检查 UsingTask 元素中 Microsoft.Web.Publishing.Tasks.dll 的路径(更改您的 Visual Studio 版本)
  2. 在您的示例中,源和目标是相同的;你应该确保目标是一个不同的文件,这样你就没有文件锁定问题或覆盖你试图用转换后的文件进行转换的 web.config。
  3. 在 Visual Studio 2010 中,TransformXml 存在文件锁定问题,因此如果您使用的是 2010,请注意这一点。
于 2013-10-22T21:41:56.583 回答