自身のアセンブリのGUIDを取得する
GUID は AssemblyInfo.cs の中の [assembly: Guid( "aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" )] というところで設定されています。この値を実行時に取得する方法をご紹介します。
ユニークな値ですので、ミューテックス Mutex を指定する文字列に使ったり、いろいろ使い道があると思います。
フォーム ( Form1 )の上に、ボタン( button1 )を配置して下記のコードを実行してください。
using System.Reflection;
using System.Runtime.InteropServices;
この二つの using をお忘れなく。
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace aaa
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click( object sender, EventArgs e )
{
// 取得された GUID がここに格納される.
Guid guid;
// 自身のアセンブリを取得する.
Assembly assm = Assembly.GetExecutingAssembly();
// アセンブリのカスタム属性配列を取得する.
// 型 GuidAttribute を取得したい.
// この場合、第2引数は無視されるので false でも true でもいい.
Type type_guid_attr = typeof( GuidAttribute );
object [] arr_obj = assm.GetCustomAttributes( type_guid_attr, false );
// カスタム属性配列が問題なく取得できたとき.
if ( arr_obj.Length > 0 )
{
GuidAttribute guid_attr = (GuidAttribute)( arr_obj[0] );
guid = new Guid( guid_attr.Value );
}
else
{
// GuidAttributeの配列が戻らないときは空のGUIDをしこむ.
// ちなみに空のGUIDは "00000000-0000-0000-0000-000000000000" である.
guid = Guid.Empty;
}
// GUID をメッセージボックスで表示する.
MessageBox.Show( guid.ToString() );
}
}
}