これに答えるために、 http://sedodream.com/2012/08/20/WebDeployMSDeployHowToSyncAFolder.aspxにブログ投稿を書きました。あなたの質問から、あなたはMSDeployにかなり精通しているように見えるので、答えは少し冗長かもしれませんが、MSDeployの知識が少ない人にも理解してもらいたいと思いました。以下に回答を貼り付けました。
Web Deploy(別名MSDeploy)はプロバイダーモデルを使用しており、すぐに使用できるプロバイダーが多数あります。いくつかのプロバイダーの例を示します。IIS Webアプリケーションを同期するときは、iisAppを使用し、MSDeployパッケージの場合はパッケージを使用し、WebサーバーwebServerの場合などを使用します。ローカルフォルダーをリモートIISパスに同期する場合は、contentPathプロバイダーを使用できます。このプロバイダーを使用して、あるWebサイトから別のWebサイトにフォルダーを同期することもできます。
この場合に実行したいことの一般的な考え方は、PCからIISWebサイトにフォルダーを同期することです。msdeploy.exeの呼び出しは少し冗長になる可能性があるため、一度に1ステップずつコマンドを作成してみましょう。以下のテンプレートを使用します。
msdeploy.exe -verb:sync -source:contentPath="" -dest:contentPath=""
sync動詞を使用して、実行しようとしていることを記述してから、ソースと宛先の両方にcontentPathプロバイダーを使用します。次に、これらの値を入力します。ソース値については、同期するフォルダーへのフルパスを渡す必要があります。私の場合、ファイルはC:\ temp\files-to-pubにあります。dest値には、IISパスとしてフォルダーへのパスを指定します。私の場合、同期しているWebサイトの名前はsayedupdemoであるため、同期するIISパスは「<em> sayedupdemo/files-to-pub」です。今それは私たちに与えます。
msdeploy.exe –verb:sync -source:contentPath="C:\temp\files-to-pub" -dest:contentPath='sayedupdemo/files-to-pub'
dest値については、これらのコマンドが送信されることになっているサーバーを示すパラメーターを指定していません。これらのパラメータを追加する必要があります。通常渡す必要のあるパラメータは次のとおりです。
- ComputerName –これは公開操作を処理するURLまたはコンピューター名です
- ユーザー名–ユーザー名
- パスワード–パスワード
- AuthType –使用されるauthType。NTLMまたはBasicのいずれか。WMSvcの場合、これは通常基本です。リモートエージェントサービスの場合、これはNTLMです。
私の場合、WindowsAzureWebサイトに公開しています。したがって、使用する値は次のとおりです。
これらの値はすべて、.publishSettingsファイル(WindowsAzure.comのWebサイトダッシュボードからダウンロードできます)にあります。ComputerName値の場合、完全なURLを取得するには、サイトの名前を追加する必要があります。上記の例では、手動で追加?site=sayedupdemo
しました。これは、Azureポータルに表示される名前と同じです。だから今私たちが持っているコマンドはです。
msdeploy.exe
–verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:contentPath='sayedupdemo/files-to-pub'
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
OK、もうすぐです!私の場合、このプロセス中にサーバーからファイルを削除しないようにしたいです。だから私も追加し–enableRule:DoNotDeleteRule
ます。だから私たちのコマンドは今です。
msdeploy.exe
–verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:contentPath='sayedupdemo/files-to-pub'
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
このコマンドを実行する前のこの時点で、最初にを渡して実行します–whatif
。これにより、実際に変更を加えることなく、どのような操作になるかについての概要がわかります。これを行うと、結果が下の画像に表示されます。
変更がすべて意図的なものであることを確認した後、を削除し–whatif
てコマンドを実行しました。その後、ローカルファイルがリモートサーバーに公開されました。これで、公開するたびにファイルを同期したので、変更されたファイルのみが公開されます。
個々のファイルをsnycする方法を知りたい場合は、以前のブログ投稿「公開中にWebアプリをオフラインにする方法」を参照してください。
dest:auto
あなたの場合dest:auto
、を使用していることに気づきました。それを使用できますが、IISアプリ名をパラメーターとして渡す必要があり、フォルダーへのパスが置き換えられます。以下はコマンドです。
msdeploy.exe
-verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:auto
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
-setParam:value='sayedupdemo',kind=ProviderPath,scope=contentPath,match='^C:\\temp\\files-to-pub$'