2016-04-06 18 views
3

Visual Studio 2015では、新しいCLRで古いCLRをコンパイルする際に問題はありません。これはVBCSCompiler.exeを使用しているようですが、VBCSCompiler.exeコマンドラインオプションに関するドキュメントは見つかりません。C#6.0で.NET 2.0用にどのようにコンパイルできますか?

一方、csc.exeでは、ターゲットCLRを選択するオプションがないようです。 CLR 4用にコンパイルされる最新のcsc.exeを使用するか、古いcsc.exeを使用してCLR 2用にコンパイルできますが、C#6にはなりません。

コンパイル方法CLR 2およびC#6.0?私はこれのためのビジュアルスタジオを持っている必要がありますか?他のオプションはありますか?

+0

2.0はサポートされなくなったという義務的な警告についてコメントします。 –

答えて

6

あなたは/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) 

あなたはまた、/nostdlibと現代mscorlibの自動混入を抑制する必要があります。

一緒
/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" 
} 
関連する問題