繁体   English   中英

在GAC中配置程序集的文件

[英]Config files for assemblies in GAC

我有一个.NET DLL需要从它的配置文件中读取它的配置设置。 通常,配置文件与DLL放在同一目录中。 但是,如果DLL是GAC,我如何读取配置文件,因为我只能将DLL放在GAC中,而不是它的配置文件。

用户是否需要配置Dll? 如果是这样,那么DLL应该使用app.config文件中的配置设置,而不是它自己的配置。 app.config文件应存储在与应用程序相同的目录中。 如果没有,那么你可以采取几种不同的方式。 您可以对machine.config文件进行更改,以便您的Dll可以在那里找到它们。 我不会这样做。 或者,您可以将配置存储在设置类中。 这些可以通过配置覆盖,但是您的默认值将通过属性在设置类的生成代码中设置,因此缺少配置文件不会影响您的Dll,只需要默认值。

我同意tvanfosson Gac'ed dll将从应用程序的路径中读取。 但你也可以用这种方式通知dll这是路径:

System.Configuration.ExeConfigurationFileMap fileMap = new System.Configuration.ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "THE PATH TO THE CONFIG";
System.Configuration.Configuration cfg =
System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, System.Configuration.ConfigurationUserLevel.None);

string thevalue=cfg.AppSettings.Settings[variable].Value;

您可以使用AppDomain.CurrentDomain.BaseDirectory因为DLL库本身不会被执行,您只需要获取正在调用他的可执行文件目录

就像是:

var appDomain = AppDomain.CurrentDomain.BaseDirectory;
string sFileName = appDomain.Replace("\\bin\\Debug", "");
sFileName = sFileName + "Config\\config.xml";

这里我的可执行文件位于文件夹bin\\Debug ,在文件夹中我有一个名为Config的文件夹,其中我有xml配置文件config.xml 因此, sFileName将为您提供配置文件的相对路径,如\\bin\\Debug\\Config\\config.xml

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM