访问C#表单应用程序中的程序集信息GUID

时间:2010-07-28 19:25:09

标签: c# guid assemblyinfo

我想在我的Microsoft Visual C#2008 Express Edition项目的程序集信息中使用GUID,以便在用于验证只有一个应用程序实例正在运行的Mutex中使用。如何访问GUID?我只需要在Program.Main(...)函数中使用它。感谢。

2 个答案:

答案 0 :(得分:4)

在MSDN上提出了类似的问题:

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

以下是代码exerpt:

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类型获得:

How do I programmatically get the GUID of an application in .net2.0

答案 1 :(得分:1)

您可以调用静态GetExecutingAssembly method on Assembly来获取当前正在执行的程序集。

但是,除非你有一个与程序集关联的Guid attribute,否则你不能保证一直有一个与程序集关联的Guid。

如果你有一个与程序集关联的Guid属性,那么你可以获取程序集实例并在其上调用GetCustomAttributes,它将返回与程序集关联的Guid属性,然后您可以查询该程序集GUID。

但是,我建议使用应用程序入口点的完全限定类型名称作为名称。它具有更好的语义含义,并且具有汇编资格,使其具有相当大的独特性。

如果您担心其他人使用该值来阻止您的应用程序运行,那么使用Guid并不是那么安全,有人可以随时反映您的程序集并获得Guid的价值。