private void VerifyMethod(MethodDesc method, MethodIL methodIL) { // Console.WriteLine("Verifying: " + method.ToString()); try { var importer = new ILImporter(method, methodIL); importer.ReportVerificationError = (args) => { var message = new StringBuilder(); message.Append("[IL]: Error: "); message.Append("["); message.Append(_typeSystemContext.GetModulePath(((EcmaMethod)method).Module)); message.Append(" : "); message.Append(((EcmaType)method.OwningType).Name); message.Append("::"); message.Append(method.Name); message.Append("]"); message.Append("[offset 0x"); message.Append(args.Offset.ToString("X8")); message.Append("]"); if (args.Found != null) { message.Append("[found "); message.Append(args.Found); message.Append("]"); } if (args.Expected != null) { message.Append("[expected "); message.Append(args.Expected); message.Append("]"); } if (args.Token != 0) { message.Append("[token 0x"); message.Append(args.Token.ToString("X8")); message.Append("]"); } message.Append(" "); if (_stringResourceManager == null) { _stringResourceManager = new ResourceManager("ILVerify.Resources.Strings", Assembly.GetExecutingAssembly()); } var str = _stringResourceManager.GetString(args.Code.ToString(), CultureInfo.InvariantCulture); message.Append(string.IsNullOrEmpty(str) ? args.Code.ToString() : str); Console.WriteLine(message); _numErrors++; }; importer.Verify(); } catch (NotImplementedException e) { Console.Error.WriteLine($"Error in {method}: {e.Message}"); } catch (InvalidProgramException e) { Console.Error.WriteLine($"Error in {method}: {e.Message}"); } catch (VerificationException) { } catch (BadImageFormatException) { Console.WriteLine("Unable to resolve token"); } catch (PlatformNotSupportedException e) { Console.WriteLine(e.Message); } }
private void VerifyMethod(MethodDesc method, MethodIL methodIL) { // Console.WriteLine("Verifying: " + method.ToString()); try { var importer = new ILImporter(method, methodIL); importer.ReportVerificationError = (args) => { var message = new StringBuilder(); message.Append("[IL]: Error: "); message.Append("["); message.Append(_typeSystemContext.GetModulePath(((EcmaMethod)method).Module)); message.Append(" : "); message.Append(((EcmaType)method.OwningType).Name); message.Append("::"); message.Append(method.Name); message.Append("]"); message.Append("[offset 0x"); message.Append(args.Offset.ToString("X8")); message.Append("]"); if (args.Found != null) { message.Append("[found "); message.Append(args.Found); message.Append("]"); } if (args.Expected != null) { message.Append("[expected "); message.Append(args.Expected); message.Append("]"); } if (args.Token != 0) { message.Append("[token 0x"); message.Append(args.Token.ToString("X8")); message.Append("]"); } message.Append(" "); message.Append(SR.GetResourceString(args.Code.ToString(), null) ?? args.Code.ToString()); Console.WriteLine(message); _numErrors++; }; importer.Verify(); } catch (VerificationException) { } catch (BadImageFormatException) { Console.WriteLine("Unable to resolve token"); } catch (PlatformNotSupportedException e) { Console.WriteLine(e.Message); } }