Мне нужно получить доступ к сборке моего проекта на C # .NET2.0.
Я вижу GUID в диалоговом окне «Информация о сборке» в свойствах проекта, и на данный момент я только что скопировал его в константу кода. GUID никогда не изменится, так что это неплохое решение, но было бы неплохо получить к нему прямой доступ. Есть ли способ сделать это?
ctrl+.
- ваш другSystem.AppDomain.DomainManager.get returned null.
за простое консольное приложение. Кажется,Assembly.GetEntryAssembly()
это предпочтительный способ.Другой способ - использовать Marshal.GetTypeLibGuidForAssembly .
Согласно msdn:
источник
Assembly.ReflectionOnlyLoad
если зависимые сборки не загружены.System.Runtime.InteropServices.Marshal.GetTypeLibGuidForAssembly(System.Reflection.Assembly.GetExecutingAssembly()).ToString()
. Выглядит намного проще, чем другой метод. Есть ли минусы?Или так же просто:
Работает для меня...
источник
Вы должны иметь возможность читать атрибут Guid сборки через отражение. Это получит GUID для текущей сборки
Вы также можете заменить GuidAttribute другими атрибутами, если хотите читать такие вещи, как AssemblyTitle, AssemblyVersion и т. Д.
Вы также можете загрузить другую сборку (Assembly.LoadFrom и все) вместо получения текущей сборки - если вам нужно прочитать эти атрибуты внешних сборок (например, при загрузке плагина)
источник
В случае, если кто-то еще ищет готовый рабочий пример, это то, что я в конечном итоге использовал на основе предыдущих ответов.
Обновить:
Поскольку этому было уделено немного внимания, я решил включить другой способ сделать это, который я использовал. Таким образом, вы можете использовать его из статического класса:
источник
Чтобы получить appID, вы можете использовать следующую строку кода:
Для этого вам нужно включить
System.Runtime.InteropServices;
источник
Не повезло с другими ответами, но удалось решить это с помощью этого приятного лайнера:
Надеюсь это поможет!
источник