2011-10-18 9 views
0

この質問は、実行されているのではなく、インストールされているすべてのバージョンではなく、アプリケーションを実行しているバージョンを指しています(VSを「ターゲットフレームワーク」として示しています)。私のアプリは、それが実行されている.NETフレームワークのバージョンを実行時にどのように判断するのでしょうか?

ありがとうございました。

答えて

3

EnvironmentクラスのVersionプロパティを使用できます。メジャーバージョン番号とマイナーバージョン番号を連結すると、フレームワークバージョン(2.0など)が表示されます。 MSDN:http://msdn.microsoft.com/en-us/library/system.environment.version.aspx

+0

ありがとうございますが、フレームワークのバージョンが表示されません - CLRバージョンを提供します。 – ChrisJJ

1

あなたはcurrenly実行しているCLRのバージョンを取得したい場合は、Novakovの方法(例えば4.0.30319.239)を使用します。

Environment.Version 

あなたはCLRのバージョンを知りたい場合は、プロジェクトが(反対に建てられました例えば4.0.0.0)は、次の手順を使用します。

GetType().Assembly.GetReferencedAssemblies().Single(a => a.Name == "mscorlib").Version 

古いバージョンのアセンブリはCLRの新しいバージョンで実行されている場合があるのでこれは、あなたの現在実行中のCLRとは異なる値を与えることができます。 2.0,3.0,3.5の「ターゲットフレームワーク」はすべて、CLRのバージョン2.0に対して構築されているため、ここでは2.0.0.0を返します。

あなたはCLR 2.0プロジェクトが3.5のターゲットフレームワーク使用して構築されたことを明らかにすることができる追加のチェックを実行することができます:ターゲット・フレームワークは、3.5(または4.0である場合、上記の式がtrueに評価されます

typeof(ConsoleSandbox.Program).Assembly.GetReferencedAssemblies() 
    .SingleOrDefault(a => a.Name == "System.Core") == null 

をmscorlibが4.0.0.0の場合)、ターゲットフレームワークが2.0または3.0の場合、またはSystem.Core.dllのものが使用されていない場合(たとえば、アップグレードされた2.0/3.0プロジェクト)はfalseに評価されます。

質問の背後にある必要性を説明すると、より良い回答を得ることができます。

関連する問題