手動場合msdeployを呼び出すときに行うことができます - ちょうど次のパラメータを追加します。
-skip:Directory=\\App_Data
はWeb Deploy Operation Settingsを参照してください。パスは正規表現なので、非常に柔軟です。
VS生成のProjectName.deploy.cmdスクリプトを使用して展開する場合は、(スクリプトを実行しているときに)_MsDeployAdditionalFlags環境変数でこのパラメータを渡すこともできます。
これは私のニーズに合った最高のものです(あなたと同様の状況があります)。コマンドラインからデプロイしているので、私はVSのPublishボタンとの統合を試していません。
EDIT:
私はこの回答を投稿、私は、私は今それを更新しようと思いましたので、私は場合msdeployについていくつかのことを学びました。
まず、上記のスキップルールは、一致するパス(App_Data)のすべての操作をスキップします。より詳細な制御が必要な場合は、より冗長な構文を使用できます。たとえば、唯一の削除をスキップする(ターゲット・サーバー上の任意の余分なファイルを保つために、しかし、新しいものを追加して更新し、既存のもの):
-skip:skipaction='Delete',objectname='filePath',absolutepath='\\App_Data\\.*' -skip:skipaction='Delete',objectname='dirPath',absolutepath='\\App_Data\\.*'
これは(そのすべてのコンテンツを含む)すべてのファイルとすべてのサブフォルダの削除をスキップApp_Dataには追加されませんが、追加や更新はできません。
もう1つの便利なことは、パッケージと共に生成された.deploy.cmd
スクリプトに自動的に含まれるように、スキップルールをプロジェクトファイル(.csproj
)で定義できることです。これにより、_MsDeployAdditionalFlagsを通じてスクリプトに渡す必要はありません。 ; $(_Escaped_PackageTempDir)
が必要おそらくことになっているが、実際には
<PropertyGroup>
<OnBeforePackageUsingManifest>AddCustomSkipRules</OnBeforePackageUsingManifest>
</PropertyGroup>
<Target Name="AddCustomSkipRules">
<ItemGroup>
<MsDeploySkipRules Include="SkipDeleteAppData">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipDeleteAppData">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
(名前AddCustomSkipRules
とSkipDeleteAppData
は完全に任意であり、次はcsproj
ファイルに含まれている場合は、上記のスキップルールが追加されます
私はいつもそれが空の文字列に評価されるのを見た)
詳細については、Web Deploy: Customizing a deployment packageとHow to set MSDeploy settings in .csproj fileを参照してください。
警告:これは、.deploy.cmd
スクリプトにこれらのルールを追加するだけなので、そのスクリプトを使用しないため、グラフィカルなIISマネージャをパッケージ展開に使用すると無駄になります。 VS、しかし私はチェックしていない)。
ニース、ありがとう。 –
恐ろしい!私はそのMSのページに行って、それを見つけられませんでした。 –
Visual Studioの "Publish"機能を使用してデプロイメントを行うには、 'OnBeforePackageUsingManifest'の代わりに' AfterAddIisSettingAndFileContentsToSourceManifest'を使用する必要があります。コメントを参照してくださいhttp://blog.alanta.nl/2011/02/web-deploy-customizing-deployment.html?showComment=1314013105475#c1406362862563428999 –