![](/img/trans.png)
[英]C# Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Logging
[英]Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Logging
我有启用了COM-Interop的C#库(DLL),在其中配置了App.config以启用企业日志记录。 但是,一旦从COM dll调用了BootStrapper.Run,尽管我的bin文件夹Microsoft.Practices.EnterpriseLibrary.Logging.dll(v6.0.1304.0)Microsoft.Practices中存在日志记录和常见的DLL,但我仍然收到以下错误消息。 EnterpriseLibrary.Common.dll(v6.0.1304.0)
{“在创建用于loggingConfiguration的配置节处理程序时发生错误:无法加载文件或程序集'Microsoft.Practices.EnterpriseLibrary.Logging,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。系统找不到指定的文件。
注意 :如果我从控制台(EXE)应用程序调用BootStrapper.Run(),则记录器外观初始化成功。 但是,当我从启用COM-Interop的C#DLL中调用相同代码时,出现上述错误。
我在尝试初始化LogWriterFactory时遇到了提到的异常(try块中的第三行)
public LoggingService()
{
try
{
var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
IConfigurationSource configurationSource = new FileConfigurationSource(appConfig.FilePath);
var logWriterFactory = new LogWriterFactory(configurationSource);
Logger.SetLogWriter(logWriterFactory.Create());
}
catch(Exception exception)
{
Console.Write(exception.Message);
}
}
我在这里想念什么吗?
运行Fusion logger后,我得到以下日志:
===预绑定状态信息===
日志:DisplayName = Microsoft.Practices.EnterpriseLibrary.Logging,文化=中性,PublicKeyToken = 31bf3856ad364e35(部分)WRN:为程序集提供了部分绑定信息:WRN:程序集名称:Microsoft.Practices.EnterpriseLibrary.Logging,Culture = neutral, PublicKeyToken = 31bf3856ad364e35 | 域ID:1 WRN:当仅提供部分程序集显示名称时,将发生部分绑定。 WRN:这可能导致活页夹加载不正确的组件。 WRN:建议为程序集提供完全指定的文本标识,WRN:由简单名称,版本,区域性和公共密钥令牌组成。
=== LOG:此绑定在默认加载上下文中启动。 日志:找不到应用程序配置文件。 日志:使用主机配置文件:日志:使用来自C:\\ Windows \\ Microsoft.NET \\ Framework \\ v4.0.30319 \\ config \\ machine.config的计算机配置文件。 日志:目前未将策略应用于引用(私有,自定义,部分或基于位置的程序集绑定)。
使用Fusion日志查看器,我发现存在一些问题:
1)我的App.config文件缺少标头(app.config)中企业日志记录dll的版本信息。 添加版本信息后,错误消息消失了。
2)然后,我遇到了DLL地狱问题。 由于无法启动日志记录DLL,COM DLL从GAC和EXE位置(但不在程序集位置)开始寻找其依赖项。
我选择将企业库记录DLL复制到EXE并解决了该问题。
非常感谢@rene和@Hans,他们在这里确实为我提供了帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.