如何在不加载.dll的情况下读取程序集清单

基本上需要以编程方式读取依赖项而不加载程序集本身,因为您无法卸载它们

我想到了2个解决方案,虽然我认为有更简单的方法(我忘了或不知道:) :):
1.使用您可以创建的其他AppDomain加载程序集。 卸载整个AddDomain也将卸载已加载的程序集(但仅卸载使用此AppDomain加载的程序集)。
2.使用一些api,例如CCI ,它允许您查看托管dll内部而不使用reflection机制加载它。

发现这个System.Reflection.Assembly.ReflectionOnlyLoadFrom(path)就可以了

库马尔

您可以卸载.Net DLL,但您必须首先使用AppDomain对象加载它们然后再卸载。

看看: http : //msdn.microsoft.com/en-us/library/system.appdomain(VS.80).aspx

如果你仍然想避免这种类型的进程,我想你可以自己解析DLL,但这比使用我认为的AppDomain要多得多。

-p

希望你期待Ildasm.exe(中间语言反汇编程序)

http://msdn.microsoft.com/en-us/library/aa309387(VS.71).aspx

我敢肯定,如果我错了,有人会纠正我,但这不仅仅是DLL中的另一个资源吗? 如果是这样,您可以像任何其他资源一样阅读它。

这是一个开源工具,可以让您探索DLL资源:

 http://www.wilsonc.demon.co.uk/d10resourceeditor.htm 

当然,我可以看到嵌入式清单。

因此,使用LoadLibrary()加载DLL并进行资源搜索。