Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的应用程序不读取MyApplication.dll.config文件?_C#_.net_Application Settings - Fatal编程技术网

C# 为什么我的应用程序不读取MyApplication.dll.config文件?

C# 为什么我的应用程序不读取MyApplication.dll.config文件?,c#,.net,application-settings,C#,.net,Application Settings,我正在尝试将应用程序设置用于我正在处理的C#.NET项目。但是除了默认值之外,我似乎无法让它返回任何东西。通过项目属性,我添加了一个设置DBConnectionString,并将其值设置为我想要使用的连接字符串。其范围设置为“应用” 这样做会创建许多文件,包括Settings.Settings、Settings.Designer.CS和app.conifg。根据我对这两个设置的理解。*文件定义了一个自定义设置类,该类派生自应用程序设置库。然后,Settings类具有自定义的类型安全属性,可用于设

我正在尝试将应用程序设置用于我正在处理的C#.NET项目。但是除了默认值之外,我似乎无法让它返回任何东西。通过项目属性,我添加了一个设置DBConnectionString,并将其值设置为我想要使用的连接字符串。其范围设置为“应用”

这样做会创建许多文件,包括Settings.Settings、Settings.Designer.CS和app.conifg。根据我对这两个设置的理解。*文件定义了一个自定义
设置
类,该类派生自
应用程序设置库
。然后,
Settings
类具有自定义的类型安全属性,可用于设置和检索每个设置。app.config文件是存储实际设置值的XML文件

当我构建项目时,app.config文件似乎被复制到目标目录MyApplication.dll.config。我的程序运行正常,可以使用默认的连接字符串

string conn = Properties.Settings.Default.DbConnectionString
接下来,我尝试编辑myapplication.dll.config文件以更改连接字符串。我再次运行了我的程序,但它仍然使用默认值。我注意到在我的Settings.Designer文件中有一个带有原始默认字符串的
defaultsetingvalueattribute
。我尝试删除此属性,但当我尝试检索连接字符串设置时,它只返回null

这是我用来读取连接字符串的代码

string conn = Properties.Settings.Default.DbConnectionString
我做错了什么?如何让它返回设置文件中的值而不是默认值


更新:


对不起,我应该提到这件事。我实际上是在通过公共API为另一个应用程序编写插件。因此,我的项目是DLL而不是EXE。

您无法从
*.DLL.config
文件中读取设置。如果您的库需要任何特殊设置,您需要将它们放入
app.config
web.config
文件中

编辑:您可以在主应用程序或web配置文件中包含外部配置文件。寻找细节


问题讨论了如何管理大型项目的配置文件。

设置文件和.config文件是不同的东西(我不知道为什么VS在创建设置文件时自动添加了.config)。但是,设置文件被编译成一个类,并像您所说的那样被引用。如果使用.NET reflector反编译dll,则设置类将在其中。它用于保持常量值或外部资源。例如:错误消息字符串、图标或图像

配置文件用于经常更改或在不同环境(开发、测试、产品)之间更改的设置。对于连接字符串,应使用配置文件的节。并且可以使用System.Configuration.ConfigurationManager[“connectionStringName”]引用该属性

但是,从您最初的帖子来看,您的.dll似乎将用于更大的项目(web项目的.exe)。需要注意的是,所有项目只使用一个.config文件。这是主项目的配置文件。web.config文件和exe使用XXX.XXX.XXX.exe.config(如您所见,*.exe.config文件被重命名为app.config文件的副本)。dll没有可用的配置文件。所有dll都将查看主项目的.config文件以检索信息


如果您的连接字符串永远不会更改,请务必使用设置文件。否则,请使用一个配置文件,让主项目的开发人员确定用什么填充连接字符串。

如果无法从*.dll.config读取设置,那么它们的意义何在?@Eric即使如此,也是一样的。你试过log4net吗?您必须在应用程序或web配置文件中设置log4net配置。您在哪里使用此行?在DLL或应用程序中?-1。它们没有什么不同。设置文件只是app.config/web.config文件中
userSettings
下特殊配置部分的包装类。在设置编辑器中看到的所有设置实际上都保存在相应的配置文件中。