【发布时间】:2017-03-21 15:51:38
【问题描述】:
我有一个被主应用程序引用的 DLL。当我从 DLL 调用方法时,我需要从 DLL 特定的 app.config 文件中读取配置。但是,当我将配置管理器映射到所需的配置文件时,我注意到 GetExecutingAssembly() 返回主应用程序的程序集而不是引用的 DLL。使用 DLL 时,有没有办法准确获取 DLL 程序集位置?当然,我想更新我的 DLL,以便它在执行时总是返回自己的 assebmlylocation。
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = Assembly.GetExecutingAssembly().Location);
Configuration libConfig = ConfigurationManager.OpenMappedExeConfiguration(
map, ConfigurationUserLevel.None);
【问题讨论】:
-
在 dll 中有一个方法返回
MethodBase.GetCurrentMethod().DeclaringType.Assembly? -
@stuartd 这不太可能有帮助 - 帖子中显示的代码做了同样的事情,并且可以正常工作如果通过 DLL 中的方法执行(与您的示例相同) .目前尚不清楚 OP 需要在哪里运行此代码 - 所以任何回答的人都需要提供多个选项(包括 GAC 安装和影子复制案例)
-
@AlexeiLevenkov 好点,谢谢
标签: c# dll configuration mapping .net-assembly