मेरे पास कुछ कस्टम आईएल मैंने लिखा है और यह PEVerify पास नहीं करेगा। मुझे मिली त्रुटियह .Net IL क्यों सत्यापित नहीं है?
$ peverify foo.exe Microsoft (R) .NET Framework PE Verifier. Version 4.0.30319.17929 Copyright (c) Microsoft Corporation. All rights reserved. [IL]: Error: [Z:\virtualbox_shared\foo.exe : HelloWorld.Program::Main][offset 0x00000021] Stack height at all points must be determinable in a single forward scan of IL. 1 Error(s) Verifying foo.exe
प्रोग्राम हालांकि किसी भी अपवाद के बिना ठीक चलाएगा।
.method private static hidebysig
default void Main (string[] args) cil managed
{
// Method begins at RVA 0x2050
.entrypoint
// Code size 54 (0x36)
.maxstack 2
//custom IL
ldc.i4 1
ldc.i4 1
ceq
switch(first, second)
first:
ldc.i4 1
br.s temp
popit: pop
br.s second
temp: ldc.i4 1
brfalse temp2
temp2: br.s popit
second:
ldc.i4 2
pop
ret
} // end of method Program::Main
पूर्ण स्रोत कोड pastebin
पर है मैं इस त्रुटि क्यों मिल रही: यहाँ प्रासंगिक विधि के आईएल है?
मैं तर्क को पूरी तरह से समझ नहीं पा रहा हूं, लेकिन यह 1.7.5 पिछड़ा शाखा नियंत्रण से संबंधित दिखता है (http://books.google.com/books?id=50PhgS8vjhwC&pg=PA500&lpg=PA500&dq=1.7.5+ बैकवर्ड + शाखा + बाधाएं और स्रोत = बीएल और ओटीएस = vZJvWiy5mP और sig = SGz2IS1A4ynarLdB5aMg2ZGQ16g और hl = en & sa = X और ei = b5KaUOzZNuHWiwK87IGgCw और ved = 0CFYQ6AEwBQ # v = onepage और q और f = false) – Prescott
@ प्रिस्कॉट मैं वास्तव में यहां आवेदन करने के रूप में नहीं देख रहा हूं। [This] (http://pastebin.com/YSPY5szf) कोड पर एक नज़र डालें जो सत्यापन पास करता है। (विशेष रूप से, IL_0018 लेबल) – Earlz