2010-04-09 47 views
13

我們有我認爲是一個相當標準的構建過程: 1.開發人員:簽入代碼 2.構建:投票回購,看到變化,並開始構建: 3.構建:從回購更新,構建w/MSBuild,運行單元測試w/nunit, 4.構建:創建安裝程序包在我們的構建/集成服務器上獲取MSDeploy - 是否需要升級MSBuild?

我們的安全團隊允許我們從構建服務器中提取,但不允許構建服務器推送。因此,我們通常會使用安裝程序並運行它們,這就排除了精巧的部署服務,所以我需要生成軟件包。我想使用MSDeploy,但我們有以下的問題:

  1. 我們在.NET 3.5,並使用MSDeploy的MSBuild的目標(包),需要4.0。除了.net 4.0 RC之外,還有什麼需要安裝的嗎? (MSBuild是否是升級的一部分?)
  2. 當我使用MSDeploy生成軟件包時,發現我沒有一個文件。有一個zip,deploy.cmd,SourceManifest.xml和SetParameters.xml。什麼是所有其他文件,爲什麼他們都不在'包'?
  3. 聽起來好像您可以通過告訴系統查看正在運行的IIS站點來創建軟件包。但是,如果軟件包是從CI環境構建的,那麼你不是在這裏運氣不好?感覺就像他們爲從開發環境部署的小規模開發人員設計了一些這樣的產品。這是一個很好的用例,但我很想看看每個人的企業經驗是怎樣的工具

有什麼建議嗎?

回答

26

如果您沒有使用Visual Studio 2010爲您的應用程序,那麼我建議你選擇下列之一:

  1. 使用msdeploy.exe
  2. 您的構建服務器和我們安裝Visual Studio 2010 MSDeploy任務本身

讓我再解釋一下。

選項1

MSDeploy本身對的MSBuild沒有依賴,所以你可以通過自身的積累安裝在服務器上創建包,爲你。你可以從here下載它。之後,您可以使用Exec任務創建一個MSBuild部署腳本,以使用該命令調用msdeploy.exe來創建您的軟件包。

關於第二個選項

的.targets文件以及用於MSDeploy的任務沒有部署與.NET框架,但與Visual Studio 2010本身。所以如果你想利用那些你必須在你的構建服務器上安裝VS 2010的。

您提到在您的帖子中使用包目標。您將無法使用它,因爲該目標是.NET 4項目的更大構建過程的一部分。你可以做的是創建一個單獨的MSBuild文件(獨立於不在你的項目文件),它使用MSBuild 4調用與VS 2010 for Web Deployment一起交付的任務

我在這裏回答你的編號列表專門

  1. 你將不得不安裝Visual Studio 2010,因爲這些任務是隨VS本身,而不是框架。
  2. 這些文件用於與您的軟件包進行交互。您的軟件包將整體呈現您的應用程序。 deploy.cmd將調用msdeploy.exe爲您執行部署。 SourceManifest.xml和SetParameters.xml用於自定義應用程序的部署。調用msdeploy.exe時,deploy.cmd將使用這些文件。換句話說,如果你想自定義安裝Web應用程序的路徑,你可以在SetParameters.xml中設置它以及其他選項。
  3. 您的權利設置可以來自IIS,但許多開發人員更喜歡使用VS應用程序服務器而不是IIS。這是我的首選。在這種情況下,我建議將您的應用程序部署到您將用作模板的環境中。創建所需的所有IIS設置,創建MSDeploy包,然後從包中獲取archive.xml文件,並在創建自己的包時使用它。另一種選擇是設置一個IIS服務器,您的構建過程可以部署到該服務器上,然後使用MSDeploy來同步構成應用程序的文件,然後再次從該IIS服務器生成軟件包。
+0

哇。感謝所有的信息Sayed。很有幫助! – 2010-04-10 13:27:53

+0

是否有人確定了構建服務器工作所需的最小子集?我喜歡保持構建服務器清潔,並且需要最少數量的預先安裝需求。 – 2011-12-05 00:14:58

+1

我在這裏找到答案:http://stackoverflow.com/questions/2607428/msbuild-target-package-not-found。訣竅是:從開發機器上的C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0文件夾中將「Web」和「Web Applications」文件夾複製到構建服務器上的等效目錄。 – lasseschou 2012-02-20 19:54:10

相關問題