最終的な再利用可能なソリューションは次のとおりです。
要約:
ルート フォルダーにいくつかのサイトがあり、それらのディレクトリとプロジェクト ファイル名はすべて Web サイトの値と名付けられています。スクリプトを実行して、コマンド ラインからすべてのサイト (または選択したリスト) を公開できるようにしたいと考えています。その後、Web サイトは IIS サーバー ディレクトリに公開されます。
まず、Web サイト名のパラメーターを受け取る 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>
次に、1 行に 1 つの Web サイト名を含むテキスト ファイルを作成します。これは、「dir > sites.txt」を実行してから列を編集して余分なコンテンツを削除することで簡単に生成できます。
すなわち。
site1.com
site2.com
site3.com
site4.com
最後に、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
このソリューションは、ルートからの残りの Web サイトと同じレベルのディレクトリに存在します。これが、ビルド スクリプトの "..\$(ProjectName)" の理由です。
たくさんのサイトを公開する素晴らしい方法です。これが誰かの役に立てば幸いです。