基本上需要以编程方式读取依赖项而不加载程序集本身,因为那时你无法卸载它们
答案 0 :(得分:7)
答案 1 :(得分:2)
库马尔
您可以卸载.Net DLL,但您必须首先使用AppDomain对象加载它们,然后再卸载。
看看:http://msdn.microsoft.com/en-us/library/system.appdomain(VS.80).aspx
如果您仍想避免这种类型的过程,我想您可以自己解析DLL,但这比使用我认为的AppDomain要多得多。
-p
答案 2 :(得分:2)
AppDomain
加载程序集。卸载整个AddDomain
也将卸载已加载的程序集(但仅卸载使用此AppDomain
加载的程序集)。答案 3 :(得分:1)
希望您期待Ildasm.exe(中间语言反汇编程序)
http://msdn.microsoft.com/en-us/library/aa309387(VS.71).aspx
答案 4 :(得分:0)
我确定如果我错了,有人会纠正我,但这不仅仅是DLL中的另一个资源吗?如果是这样,您可以像任何其他资源一样阅读它。
这是一个开源工具,可让您探索DLL资源:
http://www.wilsonc.demon.co.uk/d10resourceeditor.htm
果然,我可以看到嵌入式清单。
因此,使用LoadLibrary()加载DLL并进行资源搜寻。
答案 5 :(得分:0)
使用DnSpy(它不会在程序中加载dll):
var assemblyDef = dnlib.DotNet.AssemblyDef.Load("myDllName.dll");
var manifest = assemblyDef.ManifestModule; // do whatever you want from here
ref:https://www.nuget.org/packages/dnSpyLibs
我对此发表了一篇博客文章:https://medium.com/angular-and-dot-net/reading-assembly-info-without-loading-it-in-c-31a4bea7ef73