2013-07-02 12 views
12

WindowsサービスとASP.NET MVC Webサイトの共通の設定を参照しようとしています。私はApp.configまたはWeb.configのいずれかのappSettingsのfile属性を使用してこれを実行しています。参照されているファイル(common.configという名前)は、同じソリューション内の別のプロジェクトにリンクされたファイルです。 common.configはに設定されています常にの両方ともプロジェクトに設定されています。AppまたはWeb ConfigのAppSettingsとリンクファイルの使用

This stack answer to a similiar questionは、少なくともconfigSourceの場合はこの解決策が有効であると思われます。私はconfigSourceは必要ありませんが、私は2つのプロジェクトの間で共通しているプロパティのほんの一握りを望みます。 更新:私はこれを試しましたが、configSourceも機能しません。設定ファイルが見つかりません。これはcommon.configが常にコピーを持つコンテンツとして扱われないと私に信じさせてくれます。

例のApp.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings file="common.config"> 
    <add key="NotCommonKey" value="1"/> 
    </appSettings> 
</configuration> 

例のWeb.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <appSettings file="common.config"> 
    <add key="NotCommonKey2" value="2" /> 
    </appSettings> 
</configuration> 

例common.config(コンテンツ - >常にコピー)

<appSettings> 
    <add key="CommonKey" value="1" /> 
</appSettings> 

私はConfigurationManager/WebConfigurationManagerAppSettingsプロパティからの読み取りを使用しています。

common.configがリンクされたファイルの場合、AppSettingsの値は使用されず、リンクされていない場合は正常に動作します。

ありがとうございます!

+1

1. common.configが他の設定ファイルと同じフォルダにあることを確認してください。 2. common.configの変更は、再起動するまでアプリに反映されません。 –

+0

1.私は実際にそれが問題だと思います。私は、ファイルをコピーするように設定されていても、リンクされたcommon.configをWebアプリケーション/コンソールアプリケーションフォルダにコピーしていないというデバッグを実行する何らかの理由があると思います。 – scottheckel

+0

私は、別のプロジェクトに存在するリンクされた設定ファイルを使用するコンソールアプリケーションを作成すると動作することに気付きました。 web.configファイルに固有のものでなければなりません。私はこの問題をCodePlexで作成しましたhttps://aspnet.codeplex.com/workitem/10351 – scottheckel

答えて

9

Web.Configでは、「bin /」(以下の例)を追加する必要があります。

デフォルトでは、web.configはbinフォルダにコピーされませんが、common.configファイルはコピーされません。したがって、web.configからパスを追加する必要があります。 Web以外のプロジェクトでは、App.configはMyProgram.exe.configという名前のbinフォルダにコピーされ、common.configと同じディレクトリにあります。

<appSettings file="bin/common.config"> 
+1

間違っている - 設定ファイルがbinフォルダにコピーされる唯一のケースは、web.configがビルドでマークされている場合です"コンパイル"の動作。この場合、アセンブリ名は拡張子 "config"で指定できます。つまりMyProgram.dll.config – csharpforevermore

+2

私はあなたが私のことを忘れてしまったと思う - 私のポイントは、web.configはbinフォルダにコピーされないが、common.configファイルはコピーされないため、web.configからパスを追加する必要がある。Web以外のプロジェクトでは、app.configがMyProgram.exe.configという名前のbinフォルダにコピーされ、common.configと同じディレクトリにあります。 –

+0

答えが更新されました。 –

関連する問題