如何使用C#6.0编译.NET 2.0?

如何使用C#6.0编译.NET 2.0?

问题描述:

对于使用新的c#编译器编译旧版CLR,Visual Studio 2015没有任何问题。它看起来它使用VBCSCompiler.exe在这个底层,但我找不到有关VBCSCompiler.exe命令行选项的任何文档。如何使用C#6.0编译.NET 2.0?

在另一方面CSC.EXE似乎并不有一个选项,选择目标CLR。您可以使用最新的csc.exe,它将为CLR 4编译,或者您可以使用较旧的csc.exe编译为CLR 2,但不会是C#6.

那么如何编译CLR 2和C#6.0?我必须为此拥有视觉工作室吗?还有其他选择吗?

+0

我只是对不再支持2.0的强制性警告发表评论。 –

您可以/r指定旧的.NET程序集:

/reference:<alias>=<file>  Reference metadata from the specified assembly 
           file using the given alias (Short form: /r) 
/reference:<file list>  Reference metadata from the specified assembly 
           files (Short form: /r) 

您还需要压制自动加上现代的mscorlib与/nostdlib

/nostdlib[+|-]    Do not reference standard library (mscorlib.dll) 

总之,这些做起来很您可以使用C#6编译器构建.NET 2.0应用程序。

csc.exe /r:"C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll" /nostdlib Program.cs 

您甚至可以在您的应用程序中使用C#6功能! (只要它们是不包含.NET运行库的仅编译器功能)

public static string MyProp { get; } = "Hello!"; 
static void Main(string[] args) 
{ 
    Console.WriteLine(MyProp); 
    // prints "Hello!" 

    var assembly = Assembly.GetAssembly(typeof(Program)); 
    Console.WriteLine(assembly.ImageRuntimeVersion); 
    // prints "v2.0.50727" 
}