我正在运行一个名为
我的问题是,有时候
这是我的原始代码:
CoreApplication
的WCF应用程序,其VS项目引用了AncillaryProject
。 CoreApplication
使用来自AncillaryProject
的Provider
类;但是,它从未被显式引用-通过反射调用它。我的问题是,有时候
CoreApplication
找不到Provider
,因为在对GetAssemblies()
的调用中没有提及AncillaryProject
。有时它工作得很好,但有时(我猜可能是在JIT之后)它会失败。这是我的原始代码:
var providers = from d in AppDomain.CurrentDomain.GetAssemblies()
from c in d.GetTypes()
where typeof(BaseProvider).IsAssignableFrom(c)
select c;
在查看了这个问题之后,我尝试使用GetReferencedAssemblies()
:
var allAssemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
{
allAssemblies = allAssemblies.Union(
a.GetReferencedAssemblies()
.Select(b => System.Reflection.Assembly.Load(b)));
}
var providers = from d in allAssemblies
from c in d.GetTypes()
where typeof(BaseProvider).IsAssignableFrom(c)
select c;
我意识到我参考的问题通过动态加载bin目录中的所有dll文件来解决问题,但这对我来说并不是特别好。 有更好的方法吗,还是.NET根本就没有加载其他程序集?这是如何在内部处理的,我能做些什么吗?