2011-10-26 25 views
3

我正在嘗試使用WIX爲我的項目創建一個MSI。我有HEAT指向正確的目錄和它吐出的文件是正確的,但由於某種原因,當我實際上運行MSBuild它也給我所有我的單元測試DLL文件。使用WIX時刪除單元測試dll文件

任何人有任何想法如何從構建過程中刪除這些?

回答

3

一種選擇是寫一個XSL轉換修改所產生的熱量輸出(例如刪除不需要的文件):

heat.exe dir <other arguments> -t my.xsl 

要刪除特定文件的XSL可能是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
    </xsl:template> 
    <xsl:template match="node()[child::node()[@Source='UnwantedAssembly.dll']]" /> 
</xsl:stylesheet> 

該方法允許您對文件進行其他更改。儘管只刪除不需要的文件,但通常只需從構建目錄中刪除它們或將所需文件移動到另一個目錄並在其中運行HEAT通常更簡單。

1

正常情況下,您不會將heat.exe指向默認生成目錄。在編譯產品的二進制文件後,再添加第二步,將所需的文件放入第二個目錄。然後,在staged目錄中指向heat.exe。這樣你就可以更好地控制收穫路徑的文件&。

+0

這聽起來像是一個很好的選擇一個花哨的xsl文件。實際上,您是否將該命令放入編譯後編譯步驟?你對.pdb或.vhost。*文件做了什麼? – tofutim

+0

當我需要打包大量html幫助/文檔文件時,我通常只使用收集器。基本上,可能會頻繁更改的文件或需要很少定製的大量文件,因爲我永遠不會真正查看生成的.wsx文件的內容或將其檢入版本控制。比我手動輸入更復雜的任何東西。 – jbudreau