C#DLL配置文件不存在
这个问题和其他题目稍有不同 我将一个配置文件添加到我的DLL中,该文件将从网站和控制台应用程序中使用。 我正在测试web应用程序中的DLL 构建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); 找不到该文件。 我知
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配置的值。