同期を使用するときに、 MSDeployが他のフォルダー内の特定のフォルダーとファイルタイプをスキップするようにします。現在、CCNetを使用してsync動詞を使用してMSDeployを呼び出し、Webサイトをビルドからステージングサーバーに移動しています。アプリケーションやユーザーがアップロードしたファイルなどによって作成されたファイルが宛先にあるため、宛先で削除されないように特定のフォルダーを除外する必要があります。また、宛先に残す必要があるサイトによって作成されたマニフェストファイルがあります。
現時点では使用-enableRule:DoNotDeleteRule
していますが、宛先に古いファイルが残っています。
<exec>
<executable>$(MsDeploy)</executable>
<baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
<buildArgs>-verb:sync
-source:iisApp="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\"
-dest:iisApp="$(website)/$(websiteFolder)"
-enableRule:DoNotDeleteRule</buildArgs>
<buildTimeoutSeconds>600</buildTimeoutSeconds>
<successExitCodes>0,1,2</successExitCodes>
</exec>
スキップ操作を使用しようとしましたが、問題が発生しました。最初にDoNotDeleteRuleを削除し、(複数の)スキップに置き換えました
<exec>
<executable>$(MsDeploy)</executable
<baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
<buildArgs>-verb:sync
-source:iisApp="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\"
-dest:iisApp="$(website)/$(websiteFolder)"
-skip:objectName=dirPath,absolutePath="assets"
-skip:objectName=dirPath,absolutePath="survey"
-skip:objectName=dirPath,absolutePath="completion/custom/complete*.aspx"
-skip:objectName=dirPath,absolutePath="completion/custom/surveylist*.manifest"
-skip:objectName=dirPath,absolutePath="content/scorecardsupport"
-skip:objectName=dirPath,absolutePath="Desktop/docs"
-skip:objectName=dirPath,absolutePath="_TempImageFiles"</buildArgs>
<buildTimeoutSeconds>600</buildTimeoutSeconds>
<successExitCodes>0,1,2</successExitCodes>
</exec>
しかし、これは次の結果になります。
エラー:ソース(iisApp)と宛先(contentPath)は、指定された操作と互換性がありません。
エラーカウント:1。
そこで、iisAppからcontentPathに変更し、dirPathの代わりにabsolutePathを次のようにディレクトリに変更しました。
<exec>
<executable>$(MsDeploy)</executable
<baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
<buildArgs>-verb:sync
-source:contentPath="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\"
-dest:contentPath="$(website)/$(websiteFolder)"
-skip:Directory="assets"
-skip:Directory="survey"
-skip:Directory="content/scorecardsupport"
-skip:Directory="Desktop/docs"
-skip:Directory="_TempImageFiles"</buildArgs>
<buildTimeoutSeconds>600</buildTimeoutSeconds>
<successExitCodes>0,1,2</successExitCodes>
</exec>
そしてこれは私にエラーを与えます:パスの不正な文字:
<buildresults>
情報:MSDeploy.contentPath(MSDeploy.contentPath)を追加します。
情報:contentPathを追加しています(C:\ WWWRoot \ MySite
-skip:Directory = Assets
-skip :Directory =
Survey -skip:Directory = content / scorecardsupport
-skip:Directory = Desktop / docs
-skip:Directory = _TempImageFiles)。
情報:dirPathを追加しています(C:\ WWWRoot \ MySite
-skip:Directory = Assets
-skip :Directory =
Survey -skip:Directory = content / scorecardsupport
-skip:Directory = Desktop / docs
-skip:Directory = _TempImageFiles)。
</ buildresults><buildresults>
エラー:パスに不正な文字が含まれています。
エラー数:1。
</ buildresults>
したがって、参照されるフォルダーの内容が同期で削除されないように、また完了/カスタムフォルダー内の*.manifestファイルと*.aspxファイルもスキップされるように、このタスクを構成する方法を知る必要があります。