内联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#代码?