我有一个在本地程序集和当前目录中执行搜索的方法。它正在寻找一个基于提供的名称(反射)的类。但是我现在只想将我正在寻找的类/ dll加载到内存中,而不是加载它们并从中选择我想要的那个。 有人告诉我,marshalbyrefobject可以用来做到这一点。 [以下是我目前使用的代码]
解决方案是创建2个应用程序域并加载一个所有组件并执行检查然后卸载应用程序域,但我不知道如何去做。
答案 0 :(得分:0)
据我所知,您可以通过使用程序集类预先查询它们来避免加载程序集。
完整的工作模式如下所示:
1 - 通过汇编类收集信息
装配文件:
Assembly assembly = Assembly.ReflectionOnlyLoadFrom(fileName);
本地集会:
Assembly myAssembly = Assembly.GetExecutingAssembly();
2 - 迭代通过每个程序集引用上的类
Assembly mscorlib = typeof(string).Assembly;
foreach (Type type in mscorlib.GetTypes())
{
Console.WriteLine(type.FullName);
}
3 - 选择要使用的程序集后,将加载到您的应用程序域
Assembly assembly = Assembly.Load(fullAssemblyName);
或
Assembly assembly = Assembly.LoadFrom(fileName);
从以下帖子中复制的示例,如果您认为他们有助于解决您的问题,请随时对其进行回复!