2

這是我想要實現的。我在C#和VB中有許多項目,我希望將其作爲模板項目導出爲我的自動構建過程的一部分。導出模板很容易做到交互,但我需要將其作爲我自動構建過程的一部分來完成。此外,模板項目必須在導出之前實際構建,以保證在最終用戶使用模板時進行編譯。 [我知道模板項目通常不會編譯,但是我已經解決了這個問題,所以就這個問題而言,我們可以認爲模板項目會成功編譯]。如何使用MSBuild將另一個項目導出爲Visual Studio模板項目?

我打算使用MSBuild社區任務來壓縮最終導出的模板項目。然而,我不能將這個動作放在模板項目本身中,因爲那個動作會被作爲模板的一部分導出,而這並不是我想要發生的事情。

所以我的想法是我可以創建一個新的獨立的MSBuild項目,檢查其他模板項目,發現其中的文件,添加預定義的MyTemplate.vstemplate文件,壓縮這些文件和「walla」,我的導出模板。

到目前爲止這麼好。唯一的問題是,我是一個完整的MSBuild noob,我無法入門。請,我會重視關於如何完成這一任務的任何建議。

我很痛苦地意識到,這幾乎是「爲我工作」類型的問題,我的辯護是(a)它實際上不是我的工作和(b)我試圖做我的MSBuild作業而靈感就是不流淌。

回答

2

缺少「爲你做」(),我怎麼樣告訴你它是如何在別處完成的?我只是做了同樣的事情,我自己在那邊:

http://github.com/AArnott/dotnetopenid/commits

具體來說,projecttemplates/WebFormsRelyingParty Web項目轉化成由build.proj文件的BuildProjectTemplates目標項目模板。

我的策略是擁有一個可以工作的普通(可編譯的)C#web項目。我在該文件夾中還有一個.vstemplate文件,其中不是添加到該項目中,但是可以進行更改。然後在構建期間,我使用MSBuild構建網站,將結果(不包括網站構建的大部分產品)複製到臨時位置。在複製期間,我有一個自定義的MSBuild任務,它用所有源文件中的$ safeprojectname $替換我的Web應用程序名稱,因爲這是VS項目模板創建者所做的。它也會複製到圖標中用於模板。最後,它將它壓縮並將.zip文件放在我的輸出目錄中。

相關問題