2013-07-15 40 views
2

我正在使用WIX爲我的Web應用程序創建MSI設置。這工作正確。唯一不行的是啓用標準Web應用程序發佈方法的配置轉換。WIX設置中的配置轉換

我知道您可以爲現有的目標文件添加使用標記。我嘗試將TransformXml添加到WIX安裝程序的項目文件中的AfterBuild目標中,但這不起作用。

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

有人可以幫我嗎?

我創建了這個測試項目名爲WebApplicationWix

回答

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,請注意。