我把我的頭髮拉出這個MSBuild問題。如何避免MSDeploy使用MSBuild的文件系統的深層文件夾結構?
我們正在使用TeamCity構建一個包含兩個MVC網站的解決方案。作爲構建的一部分,我們將部署到構建服務器上的文件夾。 IIS指向這個文件夾,爲我們提供一個管理可見的集成構建。
以下是使用MSDeploy發佈程序包的MSBuild文件中的代碼 - 但不是作爲zip文件。
<Target Name="Deploy">
<MSBuild
Projects="$(SolutionFile)"
Properties="Platform=$(Platform);Configuration=$(Configuration);
DeployOnBuild=true;
DeployTarget=Package;
PackageLocation=$(PackageLocation);
PackageAsSingleFile=False;
AutoParameterizationWebConfigConnectionStrings=False" />
</Target>
這裏的問題是我們得到了令人難以置信的深層文件夾結構。下面是一個例子...
C:\ DEPLOY \ Archive \ Content \ C_C \ Users \ Edmond \ Documents \ Visual Studio 2008 \ CreatioGreen \ Creatio \ Code \ core \ trunk \ Website \ Website \ obj \ Release \ Package \ PackageTmp [發佈文件]
我真的要部署到像預測的文件夾...
C:\建立\網站[發佈文件] C:\建立\ mobilewebsite [發佈文件]
這就是背景。以下是具體的問題。
我們在嘗試使用MSDeploy發佈到本地文件系統時犯了錯誤嗎?我們基本上需要相當於VS2010的「發佈」功能,並進行配置轉換。我們不是試圖部署到遠程IIS實例或任何東西。
有沒有辦法做到這一點,但指定發佈文件夾?
我一直在嘗試使用MSBuild的複製任務將文件複製到更合理的文件夾 - 但我不能解決如何使用通配符來指定我們需要採取的文件夾 - 它需要是像...
C:\ FolderPackageEndsUpIn [ANYFOLDERS] \網站[ANYFOLDERS] \ PackageTmp * *。
幫助!
謝謝回答,kateroh!這有幫助。 – centralscru 2010-11-23 15:08:06
我這樣做直到我發現我無法讓Web.config轉換工作。任何想法如何做到這一點,而不使用包目標? – 2011-03-31 13:31:14
您可以通過制定跳過替換規則來解決Web.config轉換的這個問題,該規則將使web部署跳過同步web.config並將web.release.config替換爲web.config。這是一篇關於跳過替換規則的博客文章,以幫助您開始:http://blogs.iis.net/msdeploy/archive/2008/05/23/how-to-write-skip-and-replace-rules-for- msdeploy.aspx – kateroh 2011-03-31 21:16:58