4

我運行一個ASP.NET網站解決方案,其中包含一些其他項目。我已經知道MSBuild項目能夠做到這一點,但它是最好的方式嗎?他們很容易創建? nAnt,CruiseControl.NET或其他解決方案更好嗎?如何在構建後自動執行重複性任務?

當我構建網站(使用Web Deployment Projects)時,是否可以自動生成部分內容,以便它不會將項目中的某些文件夾複製到發佈文件夾中?例如,我有本地搜索索引,文件夾中的圖像和其他內容部分的文件夾,但在部署項目時我從不需要或上傳這些文件夾。

我也期待對這種類型的解決方案自動遞增構建和版本號。

回答

8

這裏的這種任務在.wdproj文件的Web部署項目的腳本的例子:

<Target Name="AfterBuild"> 
    <!-- ============================ Script Compression============================ --> 
    <MakeDir Directories="$(OutputPath)\compressed" /> 
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" /> 
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" /> 
    <RemoveDir Directories="$(OutputPath)\sql" /> 
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" /> 
    </Target> 

這將允許你刪除的文件夾。我懷疑如果你不想在上拷貝文件夾的拷貝,那麼解決方案文件應該是指定的地方,儘管我不需要使用它。)

+0

哇,這比我想象的要容易得多!太好了,謝謝! – MaseBase 2009-02-21 02:11:54

1

CruiseControl.NET解決不同的問題(持續集成)......不過,我已經受夠了惡性大獲成功的具體情況,你在問什麼。有一條學習曲線,但一旦你熟練掌握,你會想知道你是如何與之相處的。

2

您可以設置生成操作/複製到個人文件(選擇文件並點擊F4打開屬性窗口)來控制生成過程中發生了什麼給他們,而不是文件夾的輸出目錄屬性。如果您不想手動執行,可以使用(預)構建任務自動執行此操作。

另外,也可以從項目中排除這些文件夾(右鍵「從項目中排除」);他們仍然會在那裏(在解決方案資源管理器中「顯示所有文件」),但在構建項目時不會包含它們。

1

除了@ Fredrik關於將項目項目設置爲「複製到輸出目錄」的提示之外,您還可以在生成選項卡的項目屬性中指定生成後操作,幷包含CMD命令(如copy.exe和move)。可執行程序。

1

我們使用的FinalBuilder自動化一堆後生成/預構建的任務。還有一個Web界面,所以你可以通過登錄到網站並點擊一個按鈕來啓動構建(或推送網站)。

http://www.finalbuilder.com/

1

不能編輯Web部署項目的MSBuild文件爲它做你想要什麼?

4

MaseBase,您可以使用Web Deployment Projects來構建和打包Web站點。我們一直在爲具有Web應用程序方面的項目執行此操作。將WDP分配到網站後,可以將純文本XML文件打開爲.wdproj文件。最後是MSBuild目標的註釋部分,它們表示在構建過程中觸發的事件序列。

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets. 
<Target Name="BeforeBuild"> 
</Target> 
<Target Name="BeforeMerge"> 
</Target> 
<Target Name="AfterMerge"> 
</Target> 
<Target Name="AfterBuild"> 
</Target> 
--> 

你可以取消你想要的(例如「AfterBuild」)的目標,並插入必要的任務有開展您的重複生成後的活動。