いくつかの Web 参照を持つレガシー プロジェクトがあり、環境 (ローカル、開発、ステージング、運用) に応じて異なるエンドポイントを構成したいと考えています。
私はこの記事を読みましたが、VS はSettings.settings
の代わりに と applicationSettings を使用appSettings
しているため、代わりに
this.Url = System.Configuration.ConfigurationSettings.AppSettings["foo_Api"]
使っているthis.Url = global::foo.Properties.Settings.Default.foo_Api;
私の app.config は次のようになります。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="foo.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<foo.Properties.Settings>
<setting name="foo_Api" serializeAs="String">
<value>http://myserver/server/Api.asmx</value>
</setting>
</foo.Properties.Settings>
</applicationSettings>
</configuration>
での構成について読んだmachine.config
ことがありますが、同じマシンに異なる環境があるため、私の場合は機能しません。実行時に Url プロパティを変更することも、Web 参照のすべての使用法を変更する必要があるため、最善の解決策ではありません。
理想的にはappSettings
、local.config を配置してエンドポイントの値を上書きできるようにしたいのですが、値を上書きする簡単な方法があれば問題ありapplicationSettings
ません。
編集
これは dll プロジェクトです。これが何らかの影響を与えるかどうかはわかりません。