В C # или VB.NET я хотел бы знать, какой из подходов был бы наилучшим для определения PEFileKinds сборки, загруженной через Reflection . Другими словами, определите, является ли сборка WinExe, консольным приложением или библиотекой динамических ссылок.
Я нашел это решение (другие предложенные решения в этом вопросе не эффективны), но если я не ошибаюсь, я думаю, что подразумевается, что загруженный файл является сборкой .NET, и , кажется, немного аккуратно, чтобы вручную проанализировать PE-заголовок.
Я также нашел это другое решение, но, читая комментарии, оно кажется неэффективным в некоторых обстоятельствах.
По этим причинам мне интересно, существует ли действительно безопасный, управляемый способ, предпочтительно через Reflection , для определения типа PE-файла загруженной сборки.
Я уверен, что перечисление System.Reflection.Emit.PEFileKinds
не существует только для декоративных целей. Если это перечисление существует, то логично предположить, что в пространствах имен Reflection может быть элемент / функция, которую я пропустил которые внутренне используют это перечисление для возврата типа PE-файла объекта Assembly
, однако мне удалось просмотреть закрытые члены класса Assembly
через Reflection и другие связанные классы, и я ничего не нашел отношение.