私は自分の製品のWebサイトをパッケージ化して配布するためにWeb Deployを使用しています。特に、このソリューションを展開するために私のソリューションには2つの異なるプロジェクトがあります。MsBuildを使用してカスタマイズされたMsDeployマニフェストを生成する(パッケージターゲット)
解決策(Windowsサービス)の3番目のプロジェクトもWebサーバーにインストールする必要があります。
カスタムマニフェスト(dirPath
、filePath
、runCommand
プロバイダ用)を作成し、MsDeployを直接呼び出して展開することができます。しかし、可能であれば、既存のMsBuildタスクを利用してサービスをパッケージ化したいと考えています。
は、私はMSBuildの目標を経由して、マニフェストファイルのいくつかのカスタマイズを行うことが可能です参照してください。
http://social.msdn.microsoft.com/Forums/en/msbuild/thread/1044058c-f762-456b-8a68-b0863027ce47
特にMsDeploySourceManifest
アイテムを使用することによって。
Package
ターゲットを使用すると、適切な.targetsファイルを突き刺した後、contentPath
またはiisApp
がマニフェストに追加されるように見えます。理想的には、アセンブリ(またはディレクトリ)をコピーし、おそらくACLを設定して、サービスでinstallutil.exeを実行するだけです。
私のcsprojファイルを編集してPackage
ターゲットで生成されたマニフェストを完全にカスタマイズすることはできますか?
もしそうでなければ、Package
に相当する新しいターゲットを作成する簡単な方法はありますか?しかし、私は完全なカスタムマニフェストを吐き出すことができますか?
これに答えましたか? – musica
@Graci:やったよ。私は今週中にこれについて作業項目を終えています。すべての作業が終わったら回答を投稿します。主なコンセプトは、カスタムの '.targets'ファイルを作成し、カスタムターゲットを使用してrunCommandのプロバイダエントリを追加してカスタムバッチファイルを実行します(サービスの停止/アンインストール、インストール/起動)。 xmlファイルをプロジェクトに追加し、 'IncludeIisSettingsOnPublish = False'や' IncludeIisSettingsOnPublish = False'などの特定のフラグを設定します。ああ、無料のSlowCheetah以外のWebトランスフォームの拡張も役に立ちました。 –
@Merlyn:あなたのソリューションを共有する時間を見つけたら、それはあなたがそれをうまくカバーしているようにあなたの最後のコメントから偉大になるでしょう。 –