.net 使用AppDomain中的app.config文件而不是根文件夹

.net 使用AppDomain中的app.config文件而不是根文件夹,.net,connection-string,app-config,settings.settings,.net,Connection String,App Config,Settings.settings,我正在创建一个WPF应用程序,它读取运行时在AppDomain中创建的ConnectionString。它工作得很好,直到我开始使用数据集,因为它们指向我的应用程序根目录中的默认app.config文件 当我第一次加载应用程序时,connString会被保存为一个变量以供以后使用。我的第一个直觉是在我的连接中使用这个变量。因为这将意味着更少的IO读写,从而使系统更快。我能够尽可能地更改连接字符串,但在接下来的某个地方我需要启动,但不知道在哪里 现在我想弄清楚,如何让数据集或设置文件读取AppDo

我正在创建一个WPF应用程序,它读取运行时在AppDomain中创建的ConnectionString。它工作得很好,直到我开始使用数据集,因为它们指向我的应用程序根目录中的默认app.config文件

当我第一次加载应用程序时,connString会被保存为一个变量以供以后使用。我的第一个直觉是在我的连接中使用这个变量。因为这将意味着更少的IO读写,从而使系统更快。我能够尽可能地更改连接字符串,但在接下来的某个地方我需要启动,但不知道在哪里

现在我想弄清楚,如何让数据集或设置文件读取AppDomain中的app.config,而不是应用程序根文件夹中的默认app.config

仅供参考,我正在创建一个以业务数据为中心的应用程序。连接字符串根据每个公司的内部配置而变化,因此有必要使用可变连接字符串。这也是我所做的

我的主要目标是将数据集中在一个变量或单个文件中,因为这将减少以后的麻烦


提前谢谢

基本上我能够解决这个问题:

如果您想知道问题到底是什么:我不希望代码读取app.config文件来检索ConnectionString。因为当我启动系统时,我只读了一次,所以在整个系统的使用过程中继续阅读是没有意义的

顺便说一句,这是WPF应用程序与SQL SERVER 2012数据库

这就是它的工作方式:

步骤1: 转到设置项目>设置并创建一个名为DBConnString的新项目,选择ConnectionString作为类型,应用程序作为范围。然后键入一些已解除连接的字符串。输入的字符串必须是实字符串,因为数据集将在设计时读取该字符串

步骤2: 点击设置页面上的F7查看隐藏代码。输入以下代码:

Partial Friend NotInheritable Class MySettings

Private Sub MySettings_SettingsLoaded(sender As Object, e As System.Configuration.SettingsLoadedEventArgs) Handles Me.SettingsLoaded
    Me.Item("DBConnString") = ConnStringVariable
End Sub End Class
每当项目的任何部分需要access设置类时,此代码将在加载的事件中激发。这意味着在任何人可以读取默认连接字符串之前,它将被更改。如果您是新手,请用实际变量替换ConnStringVariable

步骤3: 创建一个Dataset和DataTable,当要求连接时,您将看到一个新选项:DBConnString MySettings。选择那个

请记住,在设计时,DataTables将使用您手动编写的默认字符串,但在运行时,Settings.vb或cs类将使用变量替换默认值


这个简单的技巧将允许您使用ConnectionString变量在整个项目中重用,而不必每次尝试连接到DB时都访问磁盘

你们的问题上写满了糟糕的实践,过分关注微观优化。您根本没有解释为什么要使用单独的AppDomain,而是给它另一个.config文件。在WPF应用程序中很难实现这一点。很有可能这是另一个让你陷入麻烦的微观优化。失去appdomain。Hans,这不是一个过度优化的问题,而是一个灵活性的问题。我正在使用AppDomain,因为当我发布软件的新更新时,应用程序根目录中的app.config文件将被销毁。因此,AppDomain有助于保护某些用户数据不被更新。但回到我的问题上来,我认为我能够解决它,尽管效率不高。我将很快写下答案,以便其他人看到。