web-dev-qa-db-ja.com

app.config変換

私は、Visual Studio 2010での web.config変換 の追加の大ファンです。 MIX2011でのScott Hanselmanの最近の講演 も参照してください。

残念なのは、この機能(少なくとも表示される)がWebプロジェクトでのみ利用できることです。

私たちのソリューションには、展開されている環境に応じて異なるデータベースに接続するいくつかのWindowsサービスがあります。

誰かが同様の「app.config変換」機能を実現するためのすてきで整頓された方法を思いついたことがありますか?

注:TFS 2010を使用して、継続的インテグレーション方式でソリューションを構築しています。

24
isNaN1247

XML変換機能は任意のXMLファイルで使用できます。これは常に行っています。 MSBuildタスクを介して利用できます。

ビルドスクリプトに以下を追加してみてください。

<UsingTask TaskName="TransformXml"
           AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

<TransformXml Source="Path\To\Your\Xml.config"
              Transform="Path\To\Your\Xml.$(Configuration).config"
              Destination="Path\To\Your\Output.config" />
15
Luke Bennett

あなたはすでに答えを持っていると思いますが、私は今朝 SlowCheetah に出くわしました。これは、これまでに見た中で最高の実装です。 CIサーバーからこれを実行する方法については ブログ投稿 もあります。

15
John Laffoon

Webアプリケーションプロジェクトに組み込まれているようなapp.config変換を自動化するNice拡張機能を作成しました 構成変換

9
Golan Avraham

ルーク・ベネットの答えを使って、私を正しい軌道に乗せました。私 これが答えであることがわかりました 私たちにとって。

FTA(コードスニペットについてはリンクを参照):

  1. App.Configファイルを指す新しいプロパティProjectConfigFileNameを追加します

  2. 構成ごとにApp.Configのバージョンを追加します。つまり、App.Debug.config App.Configの下にネストするには、csprojファイルを編集します。

  3. Microsoft.CSharp.targetsのインポート直後に、Microsoft.Web.Publishing.targetsをcsprojファイルにインポートします。

  4. AfterBuildターゲットでTransformXmlタスクを呼び出します。 BeforeBuildおよびAfterBuildターゲットは、デフォルトでコメント化されていることに注意してください。

3
isNaN1247

複数のクライアントアセンブリがあり、同じ構成データを複製したくない場合は、 Profigurator を作成しました。 JSONファイルを入力として受け取り、設定をapp.configまたはweb.configに適用します。

これを書いている時点では少しラフですが、現在、デプロイ用の本番システムで使用しており、うまく機能しています。

0
Josh Kodroff