![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggBYX_MwVuWEWQcMxVJVT4k_1cA7X0VZ0-7WBqbGjpmXhdjgYgZh37-ZZF4ujiQcdEuDRIVUy-0fKrVnmmqfMiMdAJBb6flHFkvyg3WdwjQBnJSRo49n9zb_slbmDrvvO3hTLxsg/s200/fedora.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjue7IBBrKkv5ljNv2QFIMdsXKhIC_YBNtsGMe70ONQ61qA_zRqk-p_XQN4UNcQtE0zG-kFQ7iynHoUp8yuIfg0L_1X3rP2GfoYmuiTwIPc4-rNjyBBrhaWvlU0IlDtySvYj8gk3Q/s200/Mono-gorilla-aqua.32px.png)
using System;
using System.Reflection;
using System.Runtime.InteropServices;
namespace bitWalk
{
class VerTest
{
public static void Main (string[] args)
{
string clrVersionBuildtime = Assembly.GetExecutingAssembly ().ImageRuntimeVersion;
Console.WriteLine ("built CLR version: " + clrVersionBuildtime);
string clrVersionRuntime = RuntimeEnvironment.GetSystemVersion();
Console.WriteLine ("runtime CLR version: " + clrVersionRuntime);
}
}
}
プログラム名は VerTest.exe です。Linux の端末エミュレータ上で実行してみると、CLR のバージョンはどちらも v2.0.50727 でした。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG2MLkkSJaIUKgB473JlEopoRAHrGg0iNBbYuMma0sFSFFxDP4BnPs5qpjC8m3LRWB0qEHBnDGhnwkS_jDD1RcVIMYxGRNCK5iF6e-CaFf1ARXKnox9H-2tPFAKF0a62hBOE0ECQ/s280/VerTest_mono.png)
Wine 上だと、実行バージョンが変わるかもしれないと期待して試してみましたが、両方とも v2.0.50727 でした。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsZT2P34wTINgKpLzH6poWnqCHY8a15vCbf-oQtnkOIwqIhCt758hsmHORiN9zzLw1gWQrsRQdPFi-_Im0MaTFO5u8XlEulAJbcrNnlQijSoA0VWK2OLXfPQbTMlLSTs2-23MPpg/s280/VerTest_mono_wine.png)
それでは Windows 上であれば、と期待して実行してみましたが、結果はやはり同じ v2.0.50727 です。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpcspO8wMILruyA1vWwi77oHtl8s3k47pC1aNxmkMGcWZ6ErOg7xsiaJ6OSqxgIY7atclmY2xMY0HCXFO25PGPmPUuERzIAaFb08Z1mcfNa3YmnLAwKf2zZiN74puGUweisOcCHA/s280/VerTest_mono_xp.png)
なんとなく納得できないので、今度は、Windows XP 上の Visual Studio 2010 Express で同じソースを VerTest_VS.exe としてコンパイルして実行してみました。Windows 上では v4.0.30319 と表示されています。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKgjA0SXI5ttS6F4lQ9XlbQdEcrpyzmB0WKst3KM65wS-UQqeOU4NHpD5UNOA6X4yBFR5n0EXX2GdXOt6OVjjbeicc0arv8owE291lP36FuxWuwzSoYMbA1z6OylMm4khu0XaMGQ/s280/VerTest_VS_mono_xp.png)
Linux / Mono 上で実行すると、今度は確かに実行 CLR のバージョンが変わりました (v1.1.4322)。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRXgHydUm-iXmSGTch_5BFOCoat5xIzR5KAPzqmAAvz4cfa1LiOR2yJ_zZWHzMn5dqWYUPtC5J2X5Q8VE0NLTTLoQuSmSdDrCpm1JSiyV77_V47Udf5Bf2Iq-v0UY117Q6cr9QOA/s280/VerTest_VS_mono.png)
Mono でコンパイルしたプログラムで直接確認できませんでしたが、機能的には確認できたので、とりあえず納得です。
参考サイト
[1] @IT:.NET TIPS ビルド時および実行時のCLRバージョンを取得するには? - C# VB.NET
[2] @IT:.NET TIPS サイド・バイ・サイドによりCLRバージョンを指定するには?
0 件のコメント:
コメントを投稿