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().LocationFramework\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 配置文件不存在的主要内容,如果未能解决你的问题,请参考以下文章

如果不存在 C#,则创建应用程序配置文件

C#如何用程序把文本文件打包成dll文件

c# 未能载入文件或程序集

c#配置文件 c#如何把链接字符串保存保存在config中

Dynamics AX 2012 DLL 配置文件未更新

C#里面怎么使用配置文件