2017-01-17 11 views
1

sync動詞を使用してソースと宛先のプロバイダーに対してWindowsサービスを展開するために、コマンドラインでmsdeployを使用しています。ここまでは順調ですね。Web Deploy(MSDeploy)3.6ファイルの名前を変更するルールを置換します。

私のプロジェクトのビルドアセットには環境ごとの設定ファイルがあり、特定の環境へのデプロイ時には置き換えルールを使ってターゲット環境のconfigファイルの名前をデフォルトのconfigファイル名に変更したいのですが、ルールは何も私が望む結果を得ることができないようです。デプロイされている私は置き換えるルールService.Dev.exe.configService.exe.config両方なしで展開する場合

-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.Dev\.exe\.config,replace=Service.exe.config 

:私は運とルールの異なる多数の構成で試したが、最も論理的なようだ一つは、この一つです期待されるそれぞれのコンテンツ。上記の置き換えルールを追加すると、私はちょうどService.exe.configになり、それはソースからのファイルの内容であり、私が望むようにService.Dev.exe.configの内容ではありません。私はmatchreplace部品の仕様を交換(および正規表現<変更 - それに応じて>プレーンテキスト)をした場合に到達する:

-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.exe\.config,replace=Service.Dev.exe.config 

私はちょうどService.exe.configと先がないService.exe.configの内容とService.Dev.exe.configを取得します。

明らかに何かが不足していると確信していますが、それは何ですか?

答えて

2

これはあなたの質問に直接答えるものではありませんが、あなたの根本的な問題に対するより良い解決策だと思います。

実際の問題は、さまざまな環境の設定管理です。多くの開発者は、あなたのように環境ごとに異なる設定を作成します。このアプローチでは、異なる設定ファイル間で重複していて、簡単に同期が外れることがあります。

異なる環境間で構成を管理するための最良の方法は、WebDeployのパラメータ化です。これはconfigの変換に似ていますが、単一の基本設定ファイルが調整されているので、重複がはるかに少なくなります。ただし、ビルド時間ではなく展開時に変更を適用するため、パラメータ化が優先されます。これを50以上のアプリケーションに使用し、大きな成功を収めています。

詳細はこちらのブログ記事をご覧ください。http://www.dotnetcatch.com/2014/09/08/parameterizationpreview-visual-studio-extension/

関連する問題