我在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中?
答案 0 :(得分:0)
简单回答:如果您A)知道您想要在appdomain中加载的所有程序集,并且2)知道每个程序集中的类型,您可以通过执行以下操作来强制它们加载
Type temp = typeof(ClassInAssemblyA);
temp = typeof(ClassInAssemblyB);
temp = typeof(ClassInAssemblyC);
在应用程序执行开始附近的某个地方。这似乎有点hacky而且确实如此。但是它有效(只要你有资格获得上面的A和2以及参考集合A,B和C)并且很容易做到。