2009-07-29 10 views
2

私はVisual Studioソリューションで2つのプロジェクトを持っています。私は、他のプロジェクトのアセンブリのバージョン番号として、そのうちの1つにアプリケーション設定が必要です。 app.configから別のプロジェクトのアセンブリバージョンを取得するには?

は、私のように私のProject1のapp.configを何かに加えることを考えた:

<setting name="currentVersion" serializeAs="String"> 
    <value> 
    !(bind.project2.Assembly.FileVersion) 
    </value> 
</setting> 

が、明らかに、このコードは

は私が新しいバージョンをコンパイルし、手動で毎回値を変更することができます動作しません..しかし、 ...あなたは知っている...一つは忘れている。

答えて

1

Visual Studio 2010になるまでは、設定ファイルに置き換えることはできません。それから、web.configだけがそこにあります。

+0

実際、VS 2010チームからは、web.configだけでなく、すべての設定で代替サブシステムが利用できるはずです。 –

+0

Cool!私はそれを知らなかった。 –

-1

project1のapp.configをproject2に追加してファイル参照として追加できます。既存のアイテムとしてapp.configをproject2に追加するだけですが、 '追加'をクリックする代わりに '追加'ボタンをクリックしてオプションのリストを表示し、そのリストから 'リンクとして追加'を選択します。このようにして、単一のapp.configファイルがproject1とproject2で共有されます。これにより、project2はapp.configファイルの場所に依存します。したがって、project1を必要としない別のソリューションでproject2を使用する場合は注意が必要です。

2つのプロジェクト間でapp.config全体を共有したくない場合は、アプリケーション設定を外部設定ファイルに展開し、configSource経由でapp.configファイルから参照することができます。しかし、私が間違っていない場合、外部設定ファイルはapp.configファイルの同じディレクトリまたはサブディレクトリにある必要があります。したがって、共有場所またはプロジェクト1からその外部ファイルをコピーするには、project2またはその両方のビルド前のステップが必要になることがあります。

+0

心配しないでください。私はあなたの編集後の意味を理解しています。私はそれが存在するように.NET構成フレームワークが設定ファイルの式のようなバインディングを可能にするとは思わない。たとえそれがあったとしても、あなたが望むものは、それを行うためのカスタムコードを書く必要があるようです。 –

1

アプリケーションを構築するためにNAntを使用します。これは、特にNAntを使用してアプリを構築していない場合は、あなたの問題には戸惑うかもしれません。しかし、ビルド時に任意のxmlファイルに値を設定するために使用できるxmlpokeという名前のタスクはありません。例えば:私のNAntのビルド・スクリプトの一部は次のようになります。

<target name="updateconfig"> 
    <!-- Grab the mySvcSoap value from the already deployed 
     appropriate config file --> 
    <xmlpeek 
    file="${deployment.dir}/Config/appSettings.config" 
    xpath="/appSettings/add[@key = 'MyServiceSoap']/@value" 
    property="MySvcSoap"/> 
    <echo message="MyServiceSoap = ${MySvcSoap}"/> 
    <!-- Stick the peeked value into the web.config file system.serviceModel 
     configuration. --> 
    <xmlpoke 
    file="${deployment.dir}/web.config" 
    xpath="/configuration/system.serviceModel/client/endpoint[@name = 'MyServiceSoap']/@address" 
    value="${MySvcSoap}" /> 

</target> 

あなたはNAnt xmlpokeドキュメントページから詳細情報を取得することができます。

関連する問題