0

我有一个遗留项目,它有几个 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>

我已阅读有关配置 with 的信息machine.config,但在我的情况下这不起作用,因为同一台机器上有不同的环境。在运行时更改 Url 属性也不是最好的解决方案,因为我需要更改 Web 引用的所有用法。

理想情况下,我想使用appSettings这样我可以放置一个 local.config 来覆盖端点的值,但是如果有一种简单的方法来覆盖端点的值applicationSettings也可以。

编辑

这是一个dll项目。不知道这是否会以某种方式影响。

4

2 回答 2

0

您可以在 applicationSettings 部分包含外部配置文件,从而允许您针对不同的环境调整配置:

<applicationSettings>
    <foo.Properties.Settings configSource="ConfigFolder\local.config">
    </foo.Properties.Settings>
</applicationSettings>

本地配置:

<applicationSettings>
    <foo.Properties.Settings configSource="local.config">
        <setting name="foo_Api" serializeAs="String">
            <value>http://myserver/server/Api.asmx</value>
        </setting>
    </foo.Properties.Settings>
</applicationSettings
于 2013-01-29T12:34:22.933 回答
0

如果它可以帮助任何人:最后经过一些研究,我发现最好的解决方案是为每个环境添加一个 Visual Studio 配置文件和一个Web.config转换。然后我只是简单地添加到Web.config本地 Web 参考端点和每个Web.{environment}.config替换端点值的转换。

更多信息在这里

于 2013-02-11T10:27:47.363 回答