0

私はVisual Studio 2010で作業しており、メインプロジェクトと他の2つのライブラリプロジェクトがあり、メインプロジェクトへの参照が追加されています。すべてのプロジェクトには設定ファイルがあります。ソリューションをビルドした後、メイン プロジェクト用の .config ファイルは 1 つしかありませんが、ライブラリ プロジェクト用の .config ファイルはありません。このため、これらのライブラリ プロジェクトの設定を外部から変更することはできません。

では、ライブラリ プロジェクトの .config ファイルをデバッグ/リリース フォルダに入れることができるというこの問題の解決策は何でしょうか?

app.config

<?xml version="1.0"?>
<configuration>
<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <section name="Communicator.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        <section name="DatabaseManager.Database.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
</configSections>
<applicationSettings>
    <Communicator.Properties.Settings>
        <setting name="ApplicationConfigsDirectory" serializeAs="String">
            <value>\Application_Configs</value>
        </setting>
        <setting name="MaxMeterConn" serializeAs="String">
            <value>10000</value>
        </setting>
        <setting name="MaxPhyConn" serializeAs="String">
            <value>20000</value>
        </setting>
        <setting name="ServerIP" serializeAs="String">
            <value>0.0.0.0</value>
        </setting>
        <setting name="Port" serializeAs="String">
            <value>1114</value>
        </setting>
        <setting name="TCPTimeOut" serializeAs="String">
            <value>3900000000</value>
        </setting>
        <setting name="isTCPTimeOut" serializeAs="String">
            <value>True</value>
        </setting>
        <setting name="SchedulerPoolingTime" serializeAs="String">
            <value>480000</value>
        </setting>
        <setting name="startKAScheduler" serializeAs="String">
            <value>True</value>
        </setting>
        <setting name="MinCacheAge" serializeAs="String">
            <value>00:02:00</value>
        </setting>
        <setting name="MaxCahceAge" serializeAs="String">
            <value>00:05:00</value>
        </setting>
        <setting name="SaveLogToDBFlag" serializeAs="String">
            <value>True</value>
        </setting>
        <setting name="Instance" serializeAs="String">
            <value>MDC_Tester</value>
        </setting>
    </Communicator.Properties.Settings>

    <DatabaseManager.Database.Properties.Settings>
      <Setting Name="Server" Type="System.String" Scope="Application">
        <Value Profile="(Default)">192.168.30.181</Value>
      </Setting>
      <Setting Name="Database" Type="System.String" Scope="Application">
        <Value Profile="(Default)">tester</Value>
      </Setting>
      <Setting Name="UserID" Type="System.String" Scope="Application">
        <Value Profile="(Default)">root</Value>
      </Setting>
      <Setting Name="pswd" Type="System.String" Scope="Application">
        <Value Profile="(Default)">nothing</Value>
      </Setting>
      <Setting Name="MaxPoolSize" Type="System.Int32" Scope="Application">
        <Value Profile="(Default)">512</Value>
      </Setting>
    </DatabaseManager.Database.Properties.Settings>
</applicationSettings>
<system.runtime.caching>
<memoryCache>
  <namedCaches>
    <add name="default"
         cacheMemoryLimitMegabytes="1024"
         pollingInterval="00:01:30" />
  </namedCaches>
</memoryCache>
</system.runtime.caching>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>
4

1 に答える 1

3

これは、設定および構成ファイルの意図された動作です。ライブラリ プロジェクトから構成セクションをメイン プロジェクトにコピーする必要があります。また、対応するセクション要素を applicationSettings セクション グループに追加する必要があります。

<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="SomeLibrary.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      <section name="MainProject.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
</configSections>

その後、メイン構成で:

<applicationSettings>
     <SomeLibrary.Properties.Settings>
         <setting name="SomeSetting" serializeAs="String">
            <value>Whatever</value>
         </setting>
     </SomeLibrary.Properties.Settings>
     <MainProject.Properties.Settings>
        <setting name="MainSetting" serializeAs="String">
            <value>Yada yada</value>
        </setting>
    </MainProject.Properties.Settings>
</applicationSettings>

上記では、「SomeLibrary」設定タイプがメイン プロジェクトで宣言され、ライブラリに関連する設定がメイン プロジェクトの設定と一緒にメイン構成ファイルに設定されます。

于 2012-12-26T08:13:39.957 に答える