C#4.0编译器生成的IL可以在CLR 2.0上运行吗?

C#4.0编译器生成的IL可以在CLR 2.0上运行吗?

为了澄清,我不是在询问VS 2010多目标(VS选择正确的编译器版本),我想知道csc.exe 4.0是否支持多目标…

解决方法

如果一切都失败了,试试吧.我刚刚在VS2010b2中测试了以下内容,编译目标2.0:
using System;    
class Program {
    static void Main() {
        Write();
        Write(msg: "world");
        Console.ReadLine();
    }
    static void Write(string msg = "Hello") {
        Console.WriteLine(msg);
    }
}

这使用了两个新的C#4.0语言功能,它们使用.NET 2.x / 3.x / CLR 2中也存在的元数据;它在我的常规(CLR 2)机器上执行正常(我的VS2010b2是一个VM).所以我总结“是的,对某些功能”.显然,如果你使用一个框架相关的功能(动态等),它就不会那么好.

编辑:重新评论;我在命令行尝试了csc,认情况下它确实以CLR 4为目标;我会试着看看我是否可以把它作为目标CLR 2(就像VS显然可以).不幸的是,它不再包含构建输出窗口中的(伪造,顺便说一句)命令行……

更新:一些“知情人”回来了:

Pass /nostdlib and a reference to the 2.0 mscorlib.dll.

果然:

C:\Windows\Microsoft.NET\Framework\v4.0.21006>csc /nostdlib /reference:%systemRo
ot%\microsoft.net\framework\v2.0.50727\mscorlib.dll /out:c:\my.exe /target:exe "
C:\Users\marc\Documents\Visual Studio 2010\Projects\ConsoleApplication6\ConsoleA
pplication6\program.cs"
Microsoft (R) Visual C# 2010 Compiler version 4.0.21006.1
copyright (C) Microsoft Corporation. All rights reserved.

工作正常(exe工作在我的非4.0机器上).图片来源:Kevin Pilch-Bisson

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...