使用Assembly.LoadFrom的企业库CustomTraceListner

时间:2013-03-27 19:55:17

标签: enterprise-library

所以我创建了一个继承自Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.CustomTraceListener

的自定义跟踪侦听器

跟踪侦听器是一个实用程序DLL,实用程序dll正在从utility.dll.config读取其配置文件。

我正在使用LogWriterFactory("utility.dll.config")来创建LogWriter
当我在控制台应用程序中向我的utility.dll添加直接引用时,一切正常。

但如果我使用Assembly.LoadFrom("utility.dll"),则会收到以下错误:

The type 'Utility.CustomTraceListner, Utility' cannot be resolved.

如果我将utility.dll添加到GAC,那么每件事都可以。我可以在AppDomain.CurrentDomain.GetAssemblies()正上方的行上运行logWriterFactory.Create(),并看到utility.dll已加载。

我甚至可以在调用AppDomain.CurrentDomain.CreateInstanceFrom("Utility.dll", "Utility.CustomTraceListener")之前运行logWriterFactory.Create()并获得一个没有任何问题的实例。

我们有一个使用Assembly.LoadFrom的内部应用程序,我们希望每个加载的程序集都有自己的配置文件/日志设置,这些设置与加载应用程序是分开的。

如何在不将utility.dll放入GAC的情况下解决此问题的任何想法?

我知道utility.dll.config文件是正确的,因为直接引用实用程序程序集时它工作正常。

1 个答案:

答案 0 :(得分:0)

连接ResolveEventHandler解决了这个问题。

http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx