自分自身のバージョン情報を取得するには、「ファイルのバージョン情報を取得する」と「自分のアプリケーションの実行ファイルのパスを取得する」の方法を使えばできるでしょう。つまり、自分自身のファイルのパスを取得し、これを使ってバージョン情報を取得します。
'自分自身のバージョン情報を取得する Dim ver As System.Diagnostics.FileVersionInfo = _ System.Diagnostics.FileVersionInfo.GetVersionInfo( _ System.Reflection.Assembly.GetExecutingAssembly().Location) '結果を表示 Console.WriteLine(ver)
//自分自身のバージョン情報を取得する System.Diagnostics.FileVersionInfo ver = System.Diagnostics.FileVersionInfo.GetVersionInfo( System.Reflection.Assembly.GetExecutingAssembly().Location); //結果を表示 Console.WriteLine(ver);
グローバル属性(Visual Studioでは、AssemblyInfo.csやAssemblyInfo.vbファイル内に記述されている)として与えられているアセンブリマニフェストに含まれているアセンブリのタイトル(AssemblyTitle)、説明(AssemblyDescription)、会社名(AssemblyCompany)、製品名(AssemblyProduct)、著作権(AssemblyCopyright)、商標(AssemblyTrademark)などの情報を取得するには、次のようにします。
'AssemblyTitleの取得 Dim asmttl As System.Reflection.AssemblyTitleAttribute = _ CType(Attribute.GetCustomAttribute( _ System.Reflection.Assembly.GetExecutingAssembly(), _ GetType(System.Reflection.AssemblyTitleAttribute)), _ System.Reflection.AssemblyTitleAttribute) Console.WriteLine(asmttl.Title) 'AssemblyDescriptionの取得 Dim asmdc As System.Reflection.AssemblyDescriptionAttribute = _ CType(Attribute.GetCustomAttribute( _ System.Reflection.Assembly.GetExecutingAssembly(), _ GetType(System.Reflection.AssemblyDescriptionAttribute)), _ System.Reflection.AssemblyDescriptionAttribute) Console.WriteLine(asmdc.Description) 'AssemblyCompanyの取得 Dim asmcmp As System.Reflection.AssemblyCompanyAttribute = _ CType(Attribute.GetCustomAttribute( _ System.Reflection.Assembly.GetExecutingAssembly(), _ GetType(System.Reflection.AssemblyCompanyAttribute)), _ System.Reflection.AssemblyCompanyAttribute) Console.WriteLine(asmcmp.Company) 'AssemblyProductの取得 Dim asmprd As System.Reflection.AssemblyProductAttribute = _ CType(Attribute.GetCustomAttribute( _ System.Reflection.Assembly.GetExecutingAssembly(), _ GetType(System.Reflection.AssemblyProductAttribute)), _ System.Reflection.AssemblyProductAttribute) Console.WriteLine(asmprd.Product) 'AssemblyCopyrightの取得 Dim asmcpy As System.Reflection.AssemblyCopyrightAttribute = _ CType(Attribute.GetCustomAttribute( _ System.Reflection.Assembly.GetExecutingAssembly(), _ GetType(System.Reflection.AssemblyCopyrightAttribute)), _ System.Reflection.AssemblyCopyrightAttribute) Console.WriteLine(asmcpy.Copyright) 'AssemblyTrademarkの取得 Dim asmtmk As System.Reflection.AssemblyTrademarkAttribute = _ CType(Attribute.GetCustomAttribute( _ System.Reflection.Assembly.GetExecutingAssembly(), _ GetType(System.Reflection.AssemblyTrademarkAttribute)), _ System.Reflection.AssemblyTrademarkAttribute) Console.WriteLine(asmtmk.Trademark)
//AssemblyTitleの取得 System.Reflection.AssemblyTitleAttribute asmttl = (System.Reflection.AssemblyTitleAttribute) Attribute.GetCustomAttribute( System.Reflection.Assembly.GetExecutingAssembly(), typeof(System.Reflection.AssemblyTitleAttribute)); Console.WriteLine(asmttl.Title); //AssemblyDescriptionの取得 System.Reflection.AssemblyDescriptionAttribute asmdc = (System.Reflection.AssemblyDescriptionAttribute) Attribute.GetCustomAttribute( System.Reflection.Assembly.GetExecutingAssembly(), typeof(System.Reflection.AssemblyDescriptionAttribute)); Console.WriteLine(asmdc.Description); //AssemblyCompanyの取得 System.Reflection.AssemblyCompanyAttribute asmcmp = (System.Reflection.AssemblyCompanyAttribute) Attribute.GetCustomAttribute( System.Reflection.Assembly.GetExecutingAssembly(), typeof(System.Reflection.AssemblyCompanyAttribute)); Console.WriteLine(asmcmp.Company); //AssemblyProductの取得 System.Reflection.AssemblyProductAttribute asmprd = (System.Reflection.AssemblyProductAttribute) Attribute.GetCustomAttribute( System.Reflection.Assembly.GetExecutingAssembly(), typeof(System.Reflection.AssemblyProductAttribute)); Console.WriteLine(asmprd.Product); //AssemblyCopyrightの取得 System.Reflection.AssemblyCopyrightAttribute asmcpy = (System.Reflection.AssemblyCopyrightAttribute) Attribute.GetCustomAttribute( System.Reflection.Assembly.GetExecutingAssembly(), typeof(System.Reflection.AssemblyCopyrightAttribute)); Console.WriteLine(asmcpy.Copyright); //AssemblyTrademarkの取得 System.Reflection.AssemblyTrademarkAttribute asmtmk = (System.Reflection.AssemblyTrademarkAttribute) Attribute.GetCustomAttribute( System.Reflection.Assembly.GetExecutingAssembly(), typeof(System.Reflection.AssemblyTrademarkAttribute)); Console.WriteLine(asmtmk.Trademark);
GetCustomAttributeメソッドは、指定された属性が見つからなかった時は、null(VB.NETではNothing)を返します。
上記の方法で取得できる
AssemblyProductAttribute属性に設定されたアセンブリのメジャー番号、マイナ番号、リビジョン番号、ビルド番号は、次のような方法で取得できます。
'自分自身のAssemblyを取得 Dim asm As System.Reflection.Assembly = _ System.Reflection.Assembly.GetExecutingAssembly() 'バージョンの取得 Dim ver As System.Version = asm.GetName().Version '結果の表示 Console.WriteLine(ver)
//自分自身のAssemblyを取得 System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); //バージョンの取得 System.Version ver = asm.GetName().Version; //結果の表示 Console.WriteLine(ver);
はじめに紹介したFileVersionInfo.GetVersionInfoメソッドを使った方法で取得できるファイルバージョン(FileVersion)や製品バージョン(ProductVersion)はAssemblyFileVersionAttributeに設定されたバージョンであり、AssemblyName.Versionで取得できるバージョンはAssemblyProductAttributeに設定されたバージョンです。(AssemblyFileVersionAttributeが設定されていない場合は、同じになるようです。)
.NET Framework 2.0以降のVB.NETでは、My.Application.Infoプロパティにより、アプリケーションのさまざまな情報を簡単に取得できます。以下にその使用例を示します。
'アセンブリファイルの名前(拡張子なし) 'AssemblyName.Nameと同じ Console.WriteLine(My.Application.Info.AssemblyName) '会社名 'AssemblyCompanyAttribute.Companyと同じ Console.WriteLine(My.Application.Info.CompanyName) '著作権 'AssemblyCopyrightAttribute.Copyrightと同じ Console.WriteLine(My.Application.Info.Copyright) '説明 'AssemblyDescriptionAttribute.Descriptionと同じ Console.WriteLine(My.Application.Info.Description) '格納されているディレクトリ 'Assembly.Locationのディレクトリ部分と同じ Console.WriteLine(My.Application.Info.DirectoryPath) '読み込まれたすべてのアセンブリの数 'AppDomain.CurrentDomain.GetAssembliesと同じ Console.WriteLine(My.Application.Info.LoadedAssemblies.Count) '製品名 'AssemblyProductAttribute.Productと同じ Console.WriteLine(My.Application.Info.ProductName) '現在のスタック トレース情報 'Environment.StackTraceと同じ Console.WriteLine(My.Application.Info.StackTrace) 'タイトル 'AssemblyTitleAttribute.Titleと同じ Console.WriteLine(My.Application.Info.Title) '商標 'AssemblyTrademarkAttribute.Trademarkと同じ Console.WriteLine(My.Application.Info.Trademark) 'バージョン番号 'AssemblyName.Versionと同じ Console.WriteLine(My.Application.Info.Version) 'プロセスのコンテキストに割り当てられた物理メモリの量 'Environment.WorkingSetと同じ Console.WriteLine(My.Application.Info.WorkingSet)
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。