۱۳۸۸/۰۱/۲۶

ليست شماره نگارش‌هاي دات نت فريم ورك تا اين تاريخ


از زمانيكه دات نت فريم ورك ارائه شده (حدودا 8 سال يا بيشتر اگر بتاي آن‌را هم به حساب بياوريم به سال 2000 بر مي‌گردد)، نگارش‌هاي متفاوتي تا به امروز در اختيار عموم قرار گرفته اند.
جدول زير اين موارد را تا اين تاريخ ليست كرده و شماره نگارش دقيق آن‌ها را نيز بر مي‌شمارد:

.NET version

Actual version

3.5 SP1

3.5.30729.1

3.5

3.5.21022.8

3.0 SP2

3.0.4506.2152

3.0 SP1

3.0.4506.648

3.0

3.0.4506.30

2.0 SP2

2.0.50727.3053

2.0 SP1

2.0.50727.1433

2.0

2.0.50727.42

1.1 SP1

1.1.4322.2032

1.1 SP1 (in 32 bit version of Windows 2003)

1.1.4322.2300

1.1

1.1.4322.573

1.0 SP3

1.0.3705.6018

1.0 SP2

1.0.3705.288

1.0 SP1

1.0.3705.209

1.0

1.0.3705.0


براي بدست آوردن شماره نگارش‌هاي نصب شده بر روي يك كامپيوتر متاسفانه راه ساده‌‌اي وجود ندارد. امكاناتي هم كه خود دات نت فريم ورك به صورت ذاتي ارائه مي‌دهد به صورت زير است:

class NetVersion
{
public static string Version
{
get
{
return Environment.Version + "\n" +
Environment.OSVersion;
}
}
}

كه خروجي آن فقط آخرين نگارش CLR را شامل مي‌شود.
براي مثال روي ويندوز اكس پي سرويس پك 3 با دات نت فريم ورك سه و نيم، سرويس پك يك خواهيم داشت:
2.0.50727.3053
Microsoft Windows NT 5.1.2600 Service Pack 3
كه عدد نگارش ارائه شده با دات نت فريم ورك 2 سرويس پك 2 تطابق دارد. به عبارت ديگر آخرين نگارش CLR هنوز همان 2 است و موارد ديگر (مثل wf و wcf و ...) فقط يك سري افزونه براي اين هسته به شمار مي‌روند.
خوبي اين روش هم اين است كه اگر در يك هاست اينترنتي قصد داشتيد شماره نگارش دات نت فريم ورك سرور را بررسي كنيد، بدون مشكل پاسخ خواهد داد. براي مثال اگر به دات نت فريم ورك 2 سرويس پك 2 رسيديد، يعني دات نت فريم ورك سه و نيم، سرويس پك يك حتما روي سرور نصب است، چون اين دو با هم ارائه شده‌اند و به صورت مجزا ارائه نشده‌اند.

براي بدست‌ آوردن ليست دات نت فريم ورك‌هاي مختلف بايد به رجيستري ويندوز مراجعه كرد. مسيرهاي:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform


اين روش يا حتي ليست كردن فولدرهاي نصب شد در مسير C:\WINDOWS\Microsoft.NET\Framework نيز شماره نگارش كامل را ارائه نمي‌دهند. تنها راه باقيمانده مراجعه به فايل mscorlib.dll هر پوشه و بررسي نگارش آن است:



اينكار را با برنامه نويسي به صورت زير مي‌توان انجام داد:

public static string MscorlibVersion
{
get
{
//using System.Diagnostics;
FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(
Environment.GetEnvironmentVariable("windir") +
@"\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll");
return myFileVersionInfo.ProductVersion;
}
}