Доступ к информации о сборке GUID в приложении C # Form - PullRequest
2 голосов
/ 28 июля 2010

Я хотел бы использовать GUID в информации о сборке моего проекта Microsoft Visual C # 2008 Express Edition для использования в Mutex, который используется для проверки того, что работает только один экземпляр приложения.Как получить доступ к GUID?Мне нужно использовать его только в функции Program.Main(...).Благодаря.

Ответы [ 2 ]

4 голосов
/ 28 июля 2010

Аналогичный вопрос был задан в MSDN:

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/5faa901a-7e70-41f4-a096-3e6053afd5ec

Вот пример кода:

public static T GetAssemblyAttribute<T>(Assembly assembly) where T : Attribute
{
    if (assembly == null) return null;

    object[] attributes = assembly.GetCustomAttributes(typeof(T), true);

    if (attributes == null) return null;
    if (attributes.Length == 0) return null;

    return (T)attributes[0];
}

Некоторые значения также доступны черезAssembly тип:

Как программно получить GUID приложения в .net2.0

1 голос
/ 28 июля 2010

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

Однако, если у вас нет атрибута Guid , связанного со сборкой, вам не гарантируется, что Guid будет связан со сборкой все время.

Если у вас есть атрибут Guid, связанный со сборкой, то вы можете взять экземпляр сборки и вызвать GetCustomAttributes , и он вернет атрибут Guid, связанный со сборкой, который затем можно запросить для гида.

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

Если у вас есть опасения, что кто-то еще использует это значение для предотвращения запуска вашего приложения, использование Guid не намного безопаснее, кто-то всегда может отразить вашу сборку и получить значение Guid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...