Разница между GetEntryAssembly и GetExecutingAssembly - PullRequest
0 голосов
/ 19 июня 2020

Я читал документы для GetEntryAssembly и GetExecutingAssembly , пытаясь понять разницу между ними. Я просто не понимаю, как определения соотносятся друг с другом. Хотя я вижу две разные формулировки, я не могу понять подразумеваемого различия. В моей голове это ситуация potayto-potahto , которая усиливается тем же содержимым на моем экране, когда я пытаюсь отобразить значения каждого возвращенного объекта Assemby .

* 1010. * Естественно, должно быть какое-то различие, и это просто моя комедия мешает мне понять, что это такое. Итак, я провел некоторое исследование , только обнаружив, что большая часть мудрости заключается в получении пути. Одиноким ресурсом, который явно нацелен на сравнение между ними, была мертвая ссылка .

Могу я попросить конкретный пример c, где эти два метода возвращают объекты, содержимое которых различается? Желательно с кратким объяснением причины.

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Допустим, у вас есть консольный проект MyConsoleProject, который ссылается на проект библиотеки MyLibrary. Внутри MyConsoleProject и входная, и исполнительная сборки будут одинаковыми. Но внутри MyLibrary ExecutingAssembly будет относиться к проекту библиотеки, а не к консольному.

1 голос
/ 19 июня 2020

GetExecutingAssembly Получает сборку, содержащую код, который выполняется в данный момент.

GetEntryAssembly возвращает Сборку, которая является исполняемым файлом процесса в домене приложения по умолчанию, или первым исполняемым файлом, который был выполнен ExecuteAssembly (Строка). Может возвращать значение null при вызове из неуправляемого кода.

Метод GetEntryAssembly может возвращать значение null, когда управляемая сборка загружена из неуправляемого приложения. Например, если неуправляемое приложение создает экземпляр компонента COM, записанного в C#, вызов метода GetEntryAssembly из компонента C# возвращает значение null, поскольку точкой входа для процесса был неуправляемый код, а не управляемая сборка.

Артикул:

https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.getentryassembly?view=netcore-3.1

https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.getexecutingassembly?view=netcore-3.1

...