内联MSIL / CIL

我创建了以下简单方法:

public static void Main () { Console.WriteLine("Hello world!"); Console.ReadKey(true); } 

然后我使用ILSpy来获取MSIL代码:

 .method public hidebysig static void Main() cil managed { .entrypoint .maxstack 8 nop ldstr "Hello world!" call void [mscorlib]System.Console::WriteLine(string) nop ldc.i4.1 call valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey(bool) pop ret } 

最后,我尝试使用我在这里找到的#if IL技巧将MSIL代码写入我的C#代码。

 public static void Main () { #if IL nop ldstr "Hello world!" call void [mscorlib]System.Console::WriteLine(string) nop ldc.i4.1 call valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey(bool) pop ret #else Console.WriteLine("Hello world!"); Console.ReadKey(true); #endif } 

我尝试使用和不使用nop s以及使用和不使用#else这个技巧,但Visual Studio从未编译过MSIL代码。 我的错误在哪里,或者有另一种方法(如果有办法)将MSIL代码写入C#代码?