как читать манифест сборки без загрузки .dll - PullRequest
5 голосов
/ 31 июля 2009

По существу необходимо читать зависимости программно, не загружая саму сборку, так как тогда вы не сможете их выгружать

Ответы [ 6 ]

7 голосов
/ 04 августа 2009

нашел это System.Reflection.Assembly.ReflectionOnlyLoadFrom (путь) делает трюк

2 голосов
/ 31 июля 2009

2 решения приходят мне на ум, хотя я думаю, что есть более простой способ (который я забыл или не знаю :)):
1. Загрузите ваши сборки, используя дополнительные AppDomain, которые вы можете создать. Выгрузка целых AddDomain также приведет к выгрузке загруженных сборок (но только тех, которые были загружены с использованием этого AppDomain).
2. Используйте некоторые API, например CCI , которые позволяют вам заглянуть внутрь управляемых DLL, не загружая его с помощью механизма отражения.

2 голосов
/ 31 июля 2009

Кумар

Вы МОЖЕТЕ выгружать DLL-файлы .Net, но вам необходимо использовать объект AppDomain, чтобы сначала загрузить их, а затем снова выгрузить.

Взгляните: http://msdn.microsoft.com/en-us/library/system.appdomain(VS.80).aspx

Если вы все еще хотите избежать такого типа процессов, я полагаю, вы могли бы проанализировать DLL самостоятельно, но это было бы гораздо больше работы, чем использование AppDomain, я думаю.

-p

1 голос
/ 31 июля 2009

Надеюсь, вы ожидаете Ildasm.exe (дизассемблер промежуточного языка)

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

0 голосов
/ 08 марта 2019

Используйте 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

0 голосов
/ 31 июля 2009

Я уверен, что кто-то исправит меня, если я ошибаюсь, но не является ли манифест просто еще одним ресурсом в DLL? Если это так, вы можете прочитать его, как и любой другой ресурс.

Вот инструмент с открытым исходным кодом, который позволяет вам исследовать ресурсы DLL:

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

И, конечно же, я вижу встроенные манифесты с ним.

Итак, загрузите DLL с помощью LoadLibrary () и перейдите к поиску ресурсов.

...