自身のアセンブリのGUIDを取得する

GUID は AssemblyInfo.cs の中の [assembly: Guid( "aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" )] というところで設定されています。この値を実行時に取得する方法をご紹介します。

ユニークな値ですので、ミューテックス Mutex を指定する文字列に使ったり、いろいろ使い道があると思います。

フォーム ( Form1 )の上に、ボタン( button1 )を配置して下記のコードを実行してください。

この二つの 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() );

		}
	}
}