6

次のような構造のIISWebアプリケーションがあります。

wwww.mysite.com
  file1.asp
  file2.asp
  \DotNet
    file3.aspx
    file3.aspx

自動展開を行うためにTeamCityをセットアップしています。\ DotNetフォルダー(aspxファイル)に展開するMSBuildビルドステップがあり、別のビルド構成で、ルート(aspファイル)に展開する別のMSBuildビルドステップがあります。

MSDeployが不要なファイルを削除できるようにしたい。たとえば、VCSからfile2.aspを削除した場合、ターゲットIISサーバーからファイルを削除したい。

ただし、\DotNetサブフォルダーをワイプしたくありません。

コマンドラインスイッチ「SkipExtraFilesOnServer」よりもきめ細かいものを入手できますか、それともこれはオールオアナッシングの取引ですか?

4

3 に答える 3

6

私の質問に対する答えは、私が予想していたよりもはるかに単純だったことがわかりました

MSBuildを介してMSDeployPublishターゲットを使用してアプリケーションのルートフォルダーに展開する場合、既定では、ターゲットIISサーバーのファイルシステム上にある余分なサブフォルダーは削除されます。

これを回避するために、DotNetフォルダーの内容をC:\ InetPubの下の完全に別の場所に移動しましたが、IISMgrの下に元の仮想フォルダー/アプリケーション構造を保持しました。もちろん!

これで、どちらの場所にも好きなだけ公開できます。一方が他方のファイルシステムサブフォルダーではなくなったため、一方が他方を削除しようとはしません。

どちらかといえば、これは私たちの以前のフォルダー構造がいかに原始的であったか、そして私が気づかなかったことに対するばかを強調しています。

于 2013-03-27T03:48:51.833 に答える
3

ここで何を探しているのか正確にはわかりません。dotnetサブフォルダー内からすべてのファイルを削除しようとしていますが、フォルダーは保持していますか?削除操作でdotnetフォルダーから何も削除されないようにしようとしていますか?msdeploy同期操作はかなり賢いです。msdeployは、マークされたすべてのプロジェクトアセットを移動するため、dotnetフォルダー内のファイルを削除しないと仮定すると、問題はありません。

dotnetフォルダーをプロジェクトの一部ではなく、Webサーバーのサブフォルダーにあるかのように削除アクションから除外したい場合は、スキップを使用することをお勧めします。ワイルドカードを使用したmsdeployのオプション。私はこれをファイルにのみ使用しましたが、フォルダーにも機能するはずです。それは次のようになります:

 -skip:objectName=filePath,absolutePath=app_offline\.*

ここにドキュメントがあります: http ://technet.microsoft.com/en-us/library/dd569089%28WS.10%29.aspx

ページで-skip:skipAction=を検索します

于 2013-03-25T05:49:47.657 に答える
2

次のmsdeploy呼び出しのように、同期しないskipようにするフォルダーの名前で設定を追加することもできます。

msdeploy
  -verb:sync 
  -source:contentPath="C:\Data\Personal\My Repo\MSDeploy\MultiSkip\Source" 
  -dest:contentPath="C:\Data\Personal\My Repo\MSDeploy\MultiSkip\Dest" 
  -skip:objectName=dirPath,absolutePath="DotNet"

[この質問への回答から例を取りました。]

于 2013-05-02T22:15:53.097 に答える