C# DLL 配置文件不存在
Posted
技术标签:
【中文标题】C# DLL 配置文件不存在【英文标题】:C# DLL config file not present 【发布时间】:2014-10-26 10:24:44 【问题描述】:嗯,这个问题与其他标题略有相同的问题有点不同。
我向我的 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
返回另一个完全不同的路径。
那么,我做错了什么?缺少一些配置,无法将配置文件复制到运行应用程序的真实位置?
提前感谢您的帮助!
【问题讨论】:
查看相关问题:***.com/questions/34811381/… 【参考方案1】:通常,当您构建 .dll
并且它具有配置时,该文件与 dll 位于同一文件夹中。
唉,当你在另一个项目中使用你的 dll 时,该项目通常有它自己的配置,它优先于 dll 的配置。
您可以将 dll 的配置添加到父配置中,或者尝试在代码中而不是在配置中配置您需要的内容。
【讨论】:
您正在“手动”阅读它,但它不存在。正如我和 Thorsten 所说,您必须将它们放在父级的配置中,或者将它们存储在其他地方。 换一种说法:只有应用程序会读取配置文件——而且它只会读取自己的配置文件。 好的,我明白我会这样做的【参考方案2】:在 .NET DLL 中不能有配置文件。它们根本不会被使用。如果您使用项目属性中的设置选项卡,则会创建它们,但不会读取它们。您需要做的是将该配置文件中的设置合并到应用程序的配置中(在您的情况下为 web.config 文件)。
【讨论】:
你知道如何为 .net core 做到这一点吗? 抱歉回复晚了 - 实际上,没有。合理的解决方案是传递一个IConfiguration
,它应该包含您的 DLL 配置的值。以上是关于C# DLL 配置文件不存在的主要内容,如果未能解决你的问题,请参考以下文章