Подтвердить что ты не робот

Исключение Null Reference с помощью System.Reflection.Assembly

Я разработал библиотеку для внутренней электронной почты. Когда я использую эту библиотеку из другого проекта (добавив ссылку).

Он дает NullReferenceException в следующей строке.

System.Reflection.Assembly.GetEntryAssembly().GetName().Name

Любая идея, почему Assembly имеет значение null?

4b9b3361

Ответ 1

проблема решается ребятами,

Я использую

Assembly.GetAssembly(ex.TargetSite.DeclaringType.UnderlyingSystemType).GetName().Name 

чтобы получить имя EntryAssemblyName.
В этом случае у меня уже есть параметр, который принимает Exception 'ex', поэтому я решил его, используя это.

Многие благодарные парни, особенно @Aliostad

Приветствия

Ответ 2

Это особенно важно в службах Windows, где они загружаются неуправляемой средой выполнения.

Использование:

  Process.GetCurrentProcess().MainModule.FileName

Чтобы получить неуправляемый файл точки входа.


Update

Кажется, вы это ищете:

  System.Reflection.Assembly.GetExecutingAssembly().GetName().Name

Ответ 3

Ответы на вопросы OP и @Neeraj: иногда также может быть полезно получить корень вашей сборки с помощью Assembly.GetExecutingAssembly().Location (например, когда бегунок тестирования Resharper усложняет вашу жизнь при использовании GetEntryAssembly())

string rootDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string someFile = Path.Combine(
            rootDir ?? throw new InvalidOperationException(),
            "Foo",
            "Bar.txt");