3

アプリケーションの 1 つのインスタンスのみが実行されていることを確認するために使用される Mutex で使用するために、Microsoft Visual C# 2008 Express Edition プロジェクトのアセンブリ情報で GUID を使用したいと考えています。GUID にはどのようにアクセスできますか? 関数で使用するだけですProgram.Main(...)。ありがとう。

4

2 に答える 2

4

同様の質問が 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型を介して利用することもできます。

.net2.0 でアプリケーションの GUID をプログラムで取得する方法

于 2010-07-28T19:32:04.130 に答える
1

Assemblyで静的なGetExecutingAssembly メソッドを呼び出して、現在実行中のアセンブリを取得できます。

ただし、アセンブリにGuid 属性が関連付けられていない限り、常にアセンブリに Guid が関連付けられているとは限りません。

アセンブリに関連付けられた Guid 属性がある場合は、アセンブリ インスタンスを取得してGetCustomAttributesを呼び出すと、アセンブリに関連付けられた Guid 属性が返されます。これにより、Guid を照会できます。

ただし、アプリケーションのエントリ ポイントの完全修飾型名を名前として使用することをお勧めします。より良いセマンティックな意味を持ち、アセンブリ修飾されているため、かなりの一意性が得られます。

他の誰かがその値を使用してアプリケーションの実行を妨げていることに懸念がある場合、Guid の使用はそれほど安全ではなく、誰かがいつでもアセンブリを反映して Guid の値を取得できます。

于 2010-07-28T19:32:30.243 に答える