これは、2 つの発行プロファイルで行うことができます。各プロファイルの適切なコンテンツをスキップする必要があります ( Visual Studio 内から展開を実行する場合は注意が必要です)。
ただし、アプリケーション サーバーに完全にデプロイしてから、runCommand
プロバイダーを使用してバッチ ファイルを実行することをお勧めします。
これを行うには、発行プロファイルで次を定義できます。
<ItemGroup>
<AfterAddIisSettingAndFileContentsToSourceManifest>
$(AfterAddIisSettingAndFileContentsToSourceManifest);
AddContentDeploymentToSourceManifest;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</ItemGroup>
<Target Name="AddContentDeploymentToSourceManifest">
<ItemGroup>
<MsDeploySourceManifest Include="runCommand">
<Path>$(MSBuildProjectDirectory)\deployContent.bat</Path>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
次に、deployContent.bat で:
REM Detect MSDeploy location (stolen from VS generated CMD)
if "%MSDeployPath%" == "" (
for /F "usebackq tokens=1,2,*" %%h in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy" /s ^| findstr -i "InstallPath"`) do (
if /I "%%h" == "InstallPath" (
if /I "%%i" == "REG_SZ" (
if not "%%j" == "" (
if "%%~dpj" == "%%j" (
set MSDeployPath=%%j
))))))
"%MSDeployPath%mdeploy.exe" -verb:sync ^
-source:iisApp="application site name"
-dest:iisApp="static content site name",computerName=http://contentserver:8192/msdeploy.axd
-skip:File=^.*(?<!png|jpg|jpeg|css|js)$
... アプリケーション サーバーからコンテンツ サーバーにサイトを展開し、事前定義された静的コンテンツ拡張リストのいずれも持たないものはすべてスキップします。
(FYI:サーバー上に既に存在しない限り、バッチ ファイルに引数を送信しようとしないでください)