如何强制所有dll添加到Current Domain?

时间:2010-01-11 16:54:06

标签: c# .net visual-studio

我在C#中有一个解决方案,它有一个主项目Kingrey(exe)和一个名为DllReporter的项目,另一个名为ProductReportClasses。

当我尝试从DllReporter级别列出我的exe中的所有程序集时:

AppDomain.CurrentDomain.GetAssemblies()

我只获得了Kingrey和DllReporter,但没有获得ProductReportClasses。

但是当我在Kingrey的主要代码中获取程序集之前我就这样做了:

ProductReportClasses.ClassBasic b = new ProductReportClasses.ClassBasic();

而不是使用AppDomain.CurrentDomain.GetAssemblies(),而不是按原样获得所有3个程序集。

所以我的问题是:如何获取所有程序集或强制所有程序集都列在GetAssemblies中?

1 个答案:

答案 0 :(得分:0)

简单回答:如果您A)知道您想要在appdomain中加载的所有程序集,并且2)知道每个程序集中的类型,您可以通过执行以下操作来强制它们加载

Type temp = typeof(ClassInAssemblyA);
temp = typeof(ClassInAssemblyB);
temp = typeof(ClassInAssemblyC);

在应用程序执行开始附近的某个地方。这似乎有点hacky而且确实如此。但是它有效(只要你有资格获得上面的A和2以及参考集合A,B和C)并且很容易做到。