最終的可重用解決方案如下。
回顧:
我有一個根文件夾誰的目錄和項目文件的名稱都被命名爲網站的價值的幾個地點。我希望能夠從命令行發佈所有網站(或選定的列表) - 運行腳本。這些網站將被髮布到我的IIS服務器目錄。
首先,創建一個MSBuild的腳本,需要在網站名稱的參數:
<?xml version="1.0" encoding="utf-8" ?>
<Project DefaultTargets="Compile,Deploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name ="DeleteFiles">
<Delete Files="..\$(ProjectName)\$(ProjectName)\obj\debug\$(ProjectName).dll"></Delete>
<Delete Files="..\$(ProjectName)\$(ProjectName)\obj\release\$(ProjectName).dll"></Delete>
<Delete Files="..\$(ProjectName)\$(ProjectName)\bin\$(ProjectName).dll"></Delete>
<Delete Files="..\$(ProjectName)\$(ProjectName)\bin\$(ProjectName).pdb"></Delete>
</Target>
<Target Name="Compile" DependsOnTargets="DeleteFiles">
<MSBuild Projects="..\$(ProjectName)\$(ProjectName)\$(ProjectName).csproj"
Targets="Clean;Build"
Properties="OutputPath=..\$(ProjectName)\bin"/>
</Target>
<Target Name="Deploy" DependsOnTargets="Compile">
<MSBuild Projects="..\$(ProjectName)\$(ProjectName)\$(ProjectName).csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="OutDir=C:\inetpub\wwwroot\$(ProjectName)\bin\;WebProjectOutputDir=C:\inetpub\wwwroot\$(ProjectName)" />
</Target>
</Project>
接下來,創建每行一個網站名稱的文本文件。這可以通過執行「dir> sites.txt」然後列編輯出多餘的內容來輕鬆生成。
即。
最後,創建一個包含在sites.txt遍歷列表的批處理文件,並執行腳本的MSBuild:
@echo --------------------------------------------
@echo -- Iterating through list in sites.txt --
@echo --------------------------------------------
for /f %%X in (sites.txt) do msbuild build.xml /p:ProjectName="%%X" /v:n
該解決方案駐留在目錄上的同一水平其餘的網站來自根目錄,這就是爲什麼構建腳本中的「.. \ $(ProjectName)」。
發佈一堆網站的好方法,並希望這可以幫助某人。
您是否考慮過創建解決方案? MSBuild也知道如何構建它們。 – 2011-12-15 17:57:52
這讓我走上了另一條軌道......我會檢查出來的,謝謝。 – ElHaix 2011-12-16 17:34:26