以文本方式查看主题

-  曙海教育集团论坛  (http://sun4.cn/bbs/index.asp)
--  Microsoft.NET Framework  (http://sun4.cn/bbs/list.asp?boardid=78)
----  NET Framework 以及 CLR 版本辨析  (http://sun4.cn/bbs/dispbbs.asp?boardid=78&id=2633)

--  作者:wangxinxin
--  发布时间:2010-12-15 10:28:50
--  NET Framework 以及 CLR 版本辨析

我们来看看以下 ClrInfo.cs 吧:


using System;
using System.Text;

namespace Skyiv
{
  public class ClrInfo
  {
    static void Main()
    {
      Console.WriteLine("      OS Version: {0}", Environment.OSVersion);
      Console.WriteLine("     CLR Version: {0}  ( {1} )", Environment.Version, RuntimeFramework.CurrentFramework);
      Console.WriteLine("Default Encoding: {0}", Encoding.Default);
      Console.WriteLine();
      Console.WriteLine(typeof(string).AssemblyQualifiedName);
#if !NetFx20
      Console.WriteLine(typeof(System.IO.Packaging.Package).AssemblyQualifiedName);
      Console.WriteLine(typeof(System.TimeZoneInfo).AssemblyQualifiedName);
#endif
      Console.WriteLine();
      Console.WriteLine("Available Frameworks:");
      foreach (var frame in RuntimeFramework.AvailableFrameworks) Console.WriteLine("  " + frame);
    }
  }
}

使用以下 makefile 文件来编译(请参见: 浅谈 make 工具):

CLR35 = C:\\Windows\\Microsoft.NET\\Framework\\v3.5
CLR40 = C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319
CSC35 = $(CLR35)\\csc.exe
CSC40 = $(CLR40)\\csc.exe
SRC1 = ClrInfo.cs RuntimeFramework.cs

ClrInfo20.exe: $(SRC1)
	$(CSC35) -out:$@ $(SRC1) -D:NetFx20

ClrInfo35.exe: $(SRC1)
	$(CSC35) -out:$@ $(SRC1) -r:WindowsBase.dll

ClrInfo40.exe: $(SRC1)
	$(CSC40) -out:$@ $(SRC1) -r:$(CLR40)\\WPF\\WindowsBase.dll

   使用 nmake.exe 进行编译(所需的 RuntimeFamework.cs 请参见 .NET Framework CLR 版本检测):

E:\\CS\\ClrInfo> nmake ClrInfo20.exe
Microsoft (R) 程序维护实用工具 9.00.30729.01 版
版权所有(C) Microsoft Corporation。保留所有权利。

C:\\Windows\\Microsoft.NET\\Framework\\v3.5\\csc.exe -out:ClrInfo20.exe ClrInfo.cs RuntimeFramework.cs -D:NetFx20
适用于 Microsoft(R) .NET Framework 3.5 版的 Microsoft(R) Visual C# 2008 编译器 3.5.30729.1 版
版权所有(C) Microsoft Corporation。保留所有权利。

E:\\CS\\ClrInfo> nmake ClrInfo35.exe
Microsoft (R) 程序维护实用工具 9.00.30729.01 版
版权所有(C) Microsoft Corporation。保留所有权利。

C:\\Windows\\Microsoft.NET\\Framework\\v3.5\\csc.exe -out:ClrInfo35.exe ClrInfo.cs RuntimeFramework.cs -r:WindowsBase.dll
适用于 Microsoft(R) .NET Framework 3.5 版的 Microsoft(R) Visual C# 2008 编译器 3.5.30729.1 版
版权所有(C) Microsoft Corporation。保留所有权利。

E:\\CS\\ClrInfo> nmake ClrInfo40.exe
Microsoft (R) 程序维护实用工具 9.00.30729.01 版
版权所有(C) Microsoft Corporation。保留所有权利。

C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\csc.exe -out:ClrInfo40.exe ClrInfo.cs RuntimeFramework.cs
 -r:C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\WPF\\WindowsBase.dll
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.

E:\\CS\\ClrInfo> dir *.exe
2010/04/17  19:59             7,168 ClrInfo20.exe
2010/04/17  19:59             7,168 ClrInfo35.exe
2010/04/17  19:59             7,680 ClrInfo40.exe

  使用 Sun VirtualBox 全新安装 Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2 操作系统:

 

  运行 ClrInfo35.exe,结果如下所示:

 

  运行 ClrInfo40.exe,结果如下所示:

 

 

  好吧,让我们安装 Microsoft .NET Framework 2.0 SP2 吧