Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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#DLL配置文件不存在_C#_Asp.net_.net_Dll_Configuration Files - Fatal编程技术网

C#DLL配置文件不存在

C#DLL配置文件不存在,c#,asp.net,.net,dll,configuration-files,C#,Asp.net,.net,Dll,Configuration Files,这个问题和其他题目稍有不同 我将一个配置文件添加到我的DLL中,该文件将从网站和控制台应用程序中使用。 我正在测试web应用程序中的DLL 构建DLL时,我可以在bin\debug文件夹中看到我的MyApp.DLL.config 然而,当我尝试以这种方式从DLL读取设置时: var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); 找不到该文件。 我知

这个问题和其他题目稍有不同

我将一个配置文件添加到我的DLL中,该文件将从网站和控制台应用程序中使用。 我正在测试web应用程序中的DLL

构建DLL时,我可以在
bin\debug
文件夹中看到我的
MyApp.DLL.config

然而,当我尝试以这种方式从DLL读取设置时:

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
找不到该文件。 我知道这与应用程序作为
Assembly.GetExecutingAssembly()执行的位置有关。location
返回
Framework\v4.0.30319\Temporary ASP.NET Files\root\…
中的路径,而
AppDomain.CurrentDomain.BaseDirectory
返回另一个完全不同的路径

那么,我做错了什么?缺少一些配置,无法在运行应用程序的实际位置复制配置文件


提前感谢您的帮助

通常,当您构建一个
.dll
并且它有一个配置文件时,该文件与该dll位于同一文件夹中。
唉,当您在另一个项目中使用dll时,该项目通常有自己的配置,优先于dll的配置


您可以将dll的配置添加到父级的配置中,或者尝试在代码中而不是在配置中配置所需的内容。

在.NET dll中不能有配置文件。它们根本不会被使用。如果使用“项目属性”中的“设置”选项卡,则会创建它们,但不会读取它们。您需要做的是将该配置文件中的设置合并到应用程序的配置中(在您的示例中是web.config文件)。

您正在“手动”读取它,但它不在那里。正如我所说,Thorsten也一样,您必须将它们放在父配置中,或者将它们存储在其他地方。换言之,只有应用程序才会读取配置文件,而它只会读取自己的配置文件。好的,我知道我会这样做,所以看到这个相关的问题:你知道如何为.net core这样做吗?很抱歉回答得太晚-事实上,没有。合乎逻辑的解决方案是传递一个
IConfiguration
,它应该包含DLL配置的值。