我的项目是这样设置的:项目“定义”项目实施”项目“消费者”项目“消费者”同时引用了“定义”和“实施”,但没有静态引用“实施”中的任何类型。当应用程序启动时,“消费者”项目将在“定义”中调用静态方法,该方法需要在“实施”中查找类型。有没有一种方法可以强制将任何引用的程序集加载到App Domain中,而无需知道路径或名称,最好是不必使用完整的IOC框架?
3 回答
智慧大石
TA贡献1946条经验 获得超3个赞
您可以使用Assembly.GetReferencedAssemblies获取AssemblyName[],然后分别调用Assembly.Load(AssemblyName)它们。当然,您需要递归-但最好跟踪已加载的程序集:)
杨魅力
TA贡献1811条经验 获得超6个赞
只是想分享一个递归示例。我在启动例程中这样调用LoadReferencedAssembly方法:
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
this.LoadReferencedAssembly(assembly);
}
这是递归方法:
private void LoadReferencedAssembly(Assembly assembly)
{
foreach (AssemblyName name in assembly.GetReferencedAssemblies())
{
if (!AppDomain.CurrentDomain.GetAssemblies().Any(a => a.FullName == name.FullName))
{
this.LoadReferencedAssembly(Assembly.Load(name));
}
}
}
- 3 回答
- 0 关注
- 577 浏览
添加回答
举报
0/150
提交
取消