.NET TIPS ビルド時および実行時のCLRバージョンを取得するには?デジタルアドバンテージ 一色 政彦2005/03/18 |
|
|
C#やVB.NETで作成されたアプリケーションは、.NET Frameworkにおける実行エンジンであるCLR(Common Language Runtime)上で動作する。コンピュータにはバージョンの異なる複数の.NET Frameworkをインストールできるが、アプリケーションは基本的にそれがビルドされたときのバージョンのCLRにより実行されることになる。
例えば.NET Frameworkのバージョンが「v1.0.3705」の環境でビルドされたアプリケーションは、「v1.0.3705」「v1.1.4322」「v2.0.40607」など複数のバージョンが入っているマシン環境で実行する場合であっても、ビルド時と同じ「v1.0.3705」のCLRが利用されることになる(なおマシン環境のCLRバージョンを調べる方法は、Windows TIPS「.NET Frameworkのバージョンを確認する方法」を参照していただきたい)。
しかし例えば、実行するマシン環境に「v1.1.4322」しか入っていなければ、この「v1.0.3705」でビルドされたアプリケーションは「v1.1.4322」のCLR上で動作することになる。また.NET Frameworkのサイド・バイ・サイド機能によりアプリケーションが利用するCLRのバージョンを指定した場合にも、同様の状況が発生する(サイド・バイ・サイドによりCLRバージョンを指定する方法は「TIPS:サイド・バイ・サイドによりCLRバージョンを指定するには?」で紹介している)。
実際の運用では、このようにビルド時(=.NET Frameworkのクラス・ライブラリ)と実行時(=.NET FrameworkのCLR)でバージョンが必ずしも一致しないことがあり得るのだ。そこで本稿では、それぞれのCLRバージョンを調べる方法を紹介する。
ビルド時のCLRバージョンを取得する方法
ビルド時のCLRバージョンを取得するには、そのアプリケーションのアセンブリを示すAssemblyオブジェクト(System.Reflection名前空間)のImageRuntimeVersionプロパティを利用すればよい。例えば現在実行中のアセンブリのビルド時のCLRバージョンを取得するには次のようなコードになる。
//【C#】 |
'【VB.NET】 |
これを実行すると、例えば「v1.1.4322」のようなバージョン文字列を取得できる。
ただしこのメソッドは.NET Framework 1.1以降でのみ利用可能だ。.NET Framework 1.0では利用できないので注意してほしい。
実行時のCLRバージョンを取得する方法
また実行時のCLRバージョンは、RuntimeEnvironmentクラス(System.Runtime.InteropServices名前空間)のGetSystemVersionメソッドを利用すれば取得できる。例えば現在実行中のCLRバージョンを取得するには次のようなコードになる。
//【C#】 |
'【VB.NET】 |
これを実行すると、例えば「v1.1.4322」のようなバージョン文字列を取得できる。
ちなみに、次のコード例のように、Environmentクラス(System名前空間)のVersionプロパティを使っても同じように実行時のCLRバージョンを取得できる。
//【C#】 |
'【VB.NET】 |
このコードを実行すると、例えば「1.1.4322.2032」のようなバージョン文字列を取得できる。
しかしここで注意していただきたいのは、Environment.VersionプロパティをToStringメソッドで単純に文字列化すると、バージョンのリビジョン番号(「2032」の部分)が含まれてしまうということだ。このリビジョン番号は、.NET FrameworkのService Packの適用状況によって変わってくる。Service Packごとのリビジョン番号については、前掲のWindows TIPSを参照していただきたい。
カテゴリ:クラス・ライブラリ 処理対象:アセンブリ 使用ライブラリ:Assemblyクラス(System.Reflection名前空間) 使用ライブラリ:RuntimeEnvironmentクラス(System.Runtime.InteropServices名前空間) 使用ライブラリ:Environmentクラス(System名前空間) 関連TIPS:サイド・バイ・サイドによりCLRバージョンを指定するには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|