.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#】
string clrVersionBuildtime = System.Reflection.Assembly. GetExecutingAssembly().ImageRuntimeVersion;
'【VB.NET】
Dim clrVersionBuildtime As String = System.Reflection.Assembly. GetExecutingAssembly().ImageRuntimeVersion

 これを実行すると、例えば「v1.1.4322」のようなバージョン文字列を取得できる。

 ただしこのメソッドは.NET Framework 1.1以降でのみ利用可能だ。.NET Framework 1.0では利用できないので注意してほしい。

実行時のCLRバージョンを取得する方法

 また実行時のCLRバージョンは、RuntimeEnvironmentクラス(System.Runtime.InteropServices名前空間)のGetSystemVersionメソッドを利用すれば取得できる。例えば現在実行中のCLRバージョンを取得するには次のようなコードになる。

//【C#】
string clrVersionRuntime = System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion();
'【VB.NET】
Dim clrVersionRuntime As String = System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()

 これを実行すると、例えば「v1.1.4322」のようなバージョン文字列を取得できる。

 ちなみに、次のコード例のように、Environmentクラス(System名前空間)のVersionプロパティを使っても同じように実行時のCLRバージョンを取得できる。

//【C#】
string clrVersion = System.Environment.Version.ToString();
'【VB.NET】
Dim clrVersion As String = System.Environment.Version.ToString()

 このコードを実行すると、例えば「1.1.4322.2032」のようなバージョン文字列を取得できる。

 しかしここで注意していただきたいのは、Environment.VersionプロパティをToStringメソッドで単純に文字列化すると、バージョンのリビジョン番号(「2032」の部分)が含まれてしまうということだ。このリビジョン番号は、.NET FrameworkのService Packの適用状況によって変わってくる。Service Packごとのリビジョン番号については、前掲のWindows TIPSを参照していただきたい。End of Article

カテゴリ:クラス・ライブラリ 処理対象:アセンブリ
使用ライブラリ:Assemblyクラス(System.Reflection名前空間)
使用ライブラリ:RuntimeEnvironmentクラス(System.Runtime.InteropServices名前空間)
使用ライブラリ:Environmentクラス(System名前空間)
関連TIPS:サイド・バイ・サイドによりCLRバージョンを指定するには?
 
この記事と関連性の高い別の.NET TIPS
サイド・バイ・サイドによりCLRバージョンを指定するには?
バージョン情報ダイアログを作成するには?
アセンブリにバージョン情報を設定するには?
Visual Studio 2005でバージョン情報を設定するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Kinectが切り開く“夢の近未来” (2012/2/2)
     日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか?
  • 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
     アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する
  • SQL Azure Data Sync入門 (2012/1/30)
     SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説
  • Windows Phoneアプリ市場の現状を分析する (2012/1/27)
     Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH