首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConfigurationSettings对Properties.Settings

ConfigurationSettings对Properties.Settings
EN

Stack Overflow用户
提问于 2010-11-03 14:29:26
回答 4查看 6.3K关注 0票数 4

我有一个Winform应用程序,它有16个SQL连接,目前存储在DAL项目Settings.settings中。

我正在尝试编写一个"Manager“类来简化这一点(比如这里)。然而,我在网上找到的大多数例子似乎都是使用ConfigurationSettings.AppSettings["something"]的。当我使用Properties.Settings.Default.something的时候。

请有人解释一下哪个是正确的,为什么是桌面应用程序?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-03 14:42:53

我从未热衷于将sql连接字符串放入软件配置文件中。用户有一种出于好奇或愚蠢(或两者兼而有之)而愚弄他们的习惯。我喜欢将所有连接字符串(开发、模型、生产等)放入数据访问库的属性中,并在其中包含一个ConfigurationSettings类,用于根据消费应用程序设置的某些属性访问它们:

代码语言:javascript
复制
public class ConfigurationSettings
{

    public static string MyConnectionString
    {
    get
            if(ConfigurationSettings.TestMode)
                return Properties.Settings.Default.MyConnectionStringTest;
            else
                return Properties.Settings.Default.MyConnectionStringProd;
    }
    }

    // I typically only have test and not-test. This could
    // easily be some other combination of values to satisfy
    // multiple environments.
    public static bool TestMode { get; private set;}
}

这允许我通过公共名称调用该类的静态属性,并根据某些条件拥有所有可用的连接字符串。这将获取您的特定数据集、实体,以及您在担心连接字符串和设置的业务中使用的任何数据模型,这些数据模型可以编译到.dll中(不再需要担心它们)。也可以修改此方法,以便在类似的方法中从app.config (我对ASP.Net站点这样做)中提取设置。

更新:真的没有像你暗示的那样“正确”的方式。app.config旨在保存可修改的配置设置,而无需重新构建应用程序。属性设置设计为保存不可修改的设置。所以两者都是完全有效的。也许最“正确”的方法是一种对应用程序和开发团队都有意义的方法。

票数 2
EN

Stack Overflow用户

发布于 2010-11-03 14:39:00

我认为正确的方法是使用app.config文件并将它们存储在connectionStrings部分?

然后你就可以像这样访问它们:

代码语言:javascript
复制
 ConfigurationManager.ConnectionStrings["something"].ConnectionString

如果太“难看”,可以轻松地编写一个包装器。

代码语言:javascript
复制
public class ConnectionManager
{
    public string Something
    {
        get
        {
             // TODO: check to make sure the configuration exists and throw an exception perhaps
             return ConfigurationManager.ConnectionStrings["something"].ConnectionString;
        }
    }
}

Oops...as指出我的本意是做ConfigurationManager而不是ConfigurationSettings.

票数 4
EN

Stack Overflow用户

发布于 2010-11-03 14:59:50

我们更喜欢使用Properties.Settings (又名。settings.settings),因为它是强类型的。不要尝试在同一个配置文件中使用不同环境(dev/prod)的花招。每个环境都有一个单独的配置文件,并在部署它们时重命名这些配置文件,这要容易得多。即

代码语言:javascript
复制
app.config 
app.stage.config
app.test.config
app.prod.config

我们使用PowerShell脚本(类固醇上的批处理文件)来执行部署。我将简化我们作为传统批处理文件所做的工作(伪代码/未经测试的示例):

代码语言:javascript
复制
@echo off
:: %1 is the environment name (first parameter)
setlocal
set source=c:\tfs\project\bin\release\
set target=\\server\share\path\

xcopy /s/e %source% %target%

:: Using a copy command to rename/overwrite the env specific version
if exists %target%\app.%1.config copy /y %target%\app.%1.config %target%\app.config
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4088074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档