{"id":18937414,"url":"https://github.com/verifytests/verify.icsharpcode.decompiler","last_synced_at":"2025-04-15T18:32:00.401Z","repository":{"id":42575955,"uuid":"245727869","full_name":"VerifyTests/Verify.ICSharpCode.Decompiler","owner":"VerifyTests","description":"Extends Verify to allow verification of assemblies via ICSharpCode.Decompiler","archived":false,"fork":false,"pushed_at":"2025-04-09T00:42:20.000Z","size":710,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T08:15:42.168Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VerifyTests.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"license.txt","code_of_conduct":"code_of_conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"VerifyTests"}},"created_at":"2020-03-08T00:33:56.000Z","updated_at":"2025-04-09T00:42:23.000Z","dependencies_parsed_at":"2023-12-16T04:45:41.964Z","dependency_job_id":"3e97a2bb-d12f-488b-9bf9-b57ce9cc2d2a","html_url":"https://github.com/VerifyTests/Verify.ICSharpCode.Decompiler","commit_stats":{"total_commits":607,"total_committers":5,"mean_commits":121.4,"dds":0.5107084019769357,"last_synced_commit":"ffc43aa03cbb79a369a84ef71fd2d77b10a72e1e"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VerifyTests%2FVerify.ICSharpCode.Decompiler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VerifyTests%2FVerify.ICSharpCode.Decompiler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VerifyTests%2FVerify.ICSharpCode.Decompiler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VerifyTests%2FVerify.ICSharpCode.Decompiler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VerifyTests","download_url":"https://codeload.github.com/VerifyTests/Verify.ICSharpCode.Decompiler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249129225,"owners_count":21217308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T12:11:04.850Z","updated_at":"2025-04-15T18:31:55.393Z","avatar_url":"https://github.com/VerifyTests.png","language":"C#","funding_links":["https://github.com/sponsors/VerifyTests"],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"/src/icon.png\" height=\"30px\"\u003e Verify.ICSharpCode.Decompiler\n\n[![Discussions](https://img.shields.io/badge/Verify-Discussions-yellow?svg=true\u0026label=)](https://github.com/orgs/VerifyTests/discussions)\n[![Build status](https://ci.appveyor.com/api/projects/status/8kndmciqywvg350w?svg=true)](https://ci.appveyor.com/project/SimonCropp/verify-icsharpcode-decompiler)\n[![NuGet Status](https://img.shields.io/nuget/v/Verify.ICSharpCode.Decompiler.svg)](https://www.nuget.org/packages/Verify.ICSharpCode.Decompiler/)\n\nExtends [Verify](https://github.com/VerifyTests/Verify) to allow verification of assemblies via [ICSharpCode.Decompiler](https://github.com/icsharpcode/ILSpy/wiki/Getting-Started-With-ICSharpCode.Decompiler).\n\n\n**See [Milestones](../../milestones?state=closed) for release notes.**\n\n\n## NuGet package\n\nhttps://nuget.org/packages/Verify.ICSharpCode.Decompiler/\n\n\n## Usage\n\n\u003c!-- snippet: enable --\u003e\n\u003ca id='snippet-enable'\u003e\u003c/a\u003e\n```cs\n[ModuleInitializer]\npublic static void Init() =\u003e\n    VerifyICSharpCodeDecompiler.Initialize();\n```\n\u003csup\u003e\u003ca href='/src/Tests/ModuleInitializer.cs#L3-L9' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-enable' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\nThen given the following type:\n\n\u003c!-- snippet: Target.cs --\u003e\n\u003ca id='snippet-Target.cs'\u003e\u003c/a\u003e\n```cs\nusing System.ComponentModel;\n\npublic class Target :\n    INotifyPropertyChanged\n{\n    void OnPropertyChanged([CallerMemberName] string? propertyName = null) =\u003e\n        PropertyChanged?.Invoke(this, new(propertyName));\n\n    public event PropertyChangedEventHandler? PropertyChanged;\n\n    string? property;\n\n    public string? Property\n    {\n        get =\u003e property;\n        set\n        {\n            property = value;\n            OnPropertyChanged();\n        }\n    }\n}\n```\n\u003csup\u003e\u003ca href='/src/Tests/Target.cs#L1-L22' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-Target.cs' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\n### Verify Type\n\n\u003c!-- snippet: TypeDefinitionUsage --\u003e\n\u003ca id='snippet-TypeDefinitionUsage'\u003e\u003c/a\u003e\n```cs\n[Test]\npublic async Task TypeDefinitionUsage()\n{\n    using var file = new PEFile(assemblyPath);\n    var type = file.Metadata.TypeDefinitions\n        .Single(\n            _ =\u003e\n            {\n                var fullName = _.GetFullTypeName(file.Metadata);\n                return fullName.Name == \"Target\";\n            });\n    await Verify(new TypeToDisassemble(file, type));\n}\n```\n\u003csup\u003e\u003ca href='/src/Tests/Tests.cs#L7-L23' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-TypeDefinitionUsage' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\nResult:\n\n\u003c!-- snippet: Tests.TypeDefinitionUsage.verified.il --\u003e\n\u003ca id='snippet-Tests.TypeDefinitionUsage.verified.il'\u003e\u003c/a\u003e\n```il\n.class public auto ansi beforefieldinit Target\n\textends [System.Runtime]System.Object\n\timplements [System.ObjectModel]System.ComponentModel.INotifyPropertyChanged\n{\n\t.custom instance void [System.Runtime]System.Runtime.CompilerServices.NullableAttribute::.ctor(uint8) = (\n\t\t01 00 00 00 00\n\t)\n\t.custom instance void [System.Runtime]System.Runtime.CompilerServices.NullableContextAttribute::.ctor(uint8) = (\n\t\t01 00 02 00 00\n\t)\n\t.interfaceimpl type [System.ObjectModel]System.ComponentModel.INotifyPropertyChanged\n\t.custom instance void [System.Runtime]System.Runtime.CompilerServices.NullableAttribute::.ctor(uint8) = (\n\t\t01 00 00 00 00\n\t)\n\n\t// Fields\n\t.field private string 'property'\n\t.field private class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler PropertyChanged\n\t.custom instance void [System.Runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [System.Runtime]System.Diagnostics.DebuggerBrowsableState) = (\n\t\t01 00 00 00 00 00 00 00\n\t)\n\t.custom instance void [System.Runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (\n\t\t01 00 00 00\n\t)\n\n\t// Methods\n\t.method public hidebysig specialname rtspecialname \n\t\tinstance void .ctor () cil managed \n\t{\n\t\t// Header size: 1\n\t\t// Code size: 8 (0x8)\n\t\t.maxstack 8\n\n\t\tIL_0000: ldarg.0\n\t\tIL_0001: call instance void [System.Runtime]System.Object::.ctor()\n\t\tIL_0006: nop\n\t\tIL_0007: ret\n\t} // end of method Target::.ctor\n\n\t.method public final hidebysig specialname newslot virtual \n\t\tinstance void add_PropertyChanged (\n\t\t\tclass [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler 'value'\n\t\t) cil managed \n\t{\n\t\t.custom instance void [System.Runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (\n\t\t\t01 00 00 00\n\t\t)\n\t\t// Header size: 12\n\t\t// Code size: 41 (0x29)\n\t\t.maxstack 3\n\t\t.locals init (\n\t\t\t[0] class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler,\n\t\t\t[1] class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler,\n\t\t\t[2] class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler\n\t\t)\n\n\t\tIL_0000: ldarg.0\n\t\tIL_0001: ldfld class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler Target::PropertyChanged\n\t\tIL_0006: stloc.0\n\t\t// loop start (head: IL_0007)\n\t\t\tIL_0007: ldloc.0\n\t\t\tIL_0008: stloc.1\n\t\t\tIL_0009: ldloc.1\n\t\t\tIL_000a: ldarg.1\n\t\t\tIL_000b: call class [System.Runtime]System.Delegate [System.Runtime]System.Delegate::Combine(class [System.Runtime]System.Delegate, class [System.Runtime]System.Delegate)\n\t\t\tIL_0010: castclass [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler\n\t\t\tIL_0015: stloc.2\n\t\t\tIL_0016: ldarg.0\n\t\t\tIL_0017: ldflda class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler Target::PropertyChanged\n\t\t\tIL_001c: ldloc.2\n\t\t\tIL_001d: ldloc.1\n\t\t\tIL_001e: call !!0 [System.Threading]System.Threading.Interlocked::CompareExchange\u003cclass [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler\u003e(!!0\u0026, !!0, !!0)\n\t\t\tIL_0023: stloc.0\n\t\t\tIL_0024: ldloc.0\n\t\t\tIL_0025: ldloc.1\n\t\t\tIL_0026: bne.un.s IL_0007\n\t\t// end loop\n\t\tIL_0028: ret\n\t} // end of method Target::add_PropertyChanged\n\n\t.method public hidebysig specialname \n\t\tinstance string get_Property () cil managed \n\t{\n\t\t// Header size: 1\n\t\t// Code size: 7 (0x7)\n\t\t.maxstack 8\n\n\t\tIL_0000: ldarg.0\n\t\tIL_0001: ldfld string Target::'property'\n\t\tIL_0006: ret\n\t} // end of method Target::get_Property\n\n\t.method private hidebysig \n\t\tinstance void OnPropertyChanged (\n\t\t\t[opt] string propertyName\n\t\t) cil managed \n\t{\n\t\t.param [1] = nullref\n\t\t\t.custom instance void [System.Runtime]System.Runtime.CompilerServices.CallerMemberNameAttribute::.ctor() = (\n\t\t\t\t01 00 00 00\n\t\t\t)\n\t\t// Header size: 1\n\t\t// Code size: 26 (0x1a)\n\t\t.maxstack 8\n\n\t\tIL_0000: ldarg.0\n\t\tIL_0001: ldfld class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler Target::PropertyChanged\n\t\tIL_0006: dup\n\t\tIL_0007: brtrue.s IL_000c\n\n\t\tIL_0009: pop\n\t\tIL_000a: br.s IL_0019\n\n\t\tIL_000c: ldarg.0\n\t\tIL_000d: ldarg.1\n\t\tIL_000e: newobj instance void [System.ObjectModel]System.ComponentModel.PropertyChangedEventArgs::.ctor(string)\n\t\tIL_0013: callvirt instance void [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler::Invoke(object, class [System.ObjectModel]System.ComponentModel.PropertyChangedEventArgs)\n\t\tIL_0018: nop\n\n\t\tIL_0019: ret\n\t} // end of method Target::OnPropertyChanged\n\n\t.method public final hidebysig specialname newslot virtual \n\t\tinstance void remove_PropertyChanged (\n\t\t\tclass [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler 'value'\n\t\t) cil managed \n\t{\n\t\t.custom instance void [System.Runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (\n\t\t\t01 00 00 00\n\t\t)\n\t\t// Header size: 12\n\t\t// Code size: 41 (0x29)\n\t\t.maxstack 3\n\t\t.locals init (\n\t\t\t[0] class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler,\n\t\t\t[1] class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler,\n\t\t\t[2] class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler\n\t\t)\n\n\t\tIL_0000: ldarg.0\n\t\tIL_0001: ldfld class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler Target::PropertyChanged\n\t\tIL_0006: stloc.0\n\t\t// loop start (head: IL_0007)\n\t\t\tIL_0007: ldloc.0\n\t\t\tIL_0008: stloc.1\n\t\t\tIL_0009: ldloc.1\n\t\t\tIL_000a: ldarg.1\n\t\t\tIL_000b: call class [System.Runtime]System.Delegate [System.Runtime]System.Delegate::Remove(class [System.Runtime]System.Delegate, class [System.Runtime]System.Delegate)\n\t\t\tIL_0010: castclass [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler\n\t\t\tIL_0015: stloc.2\n\t\t\tIL_0016: ldarg.0\n\t\t\tIL_0017: ldflda class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler Target::PropertyChanged\n\t\t\tIL_001c: ldloc.2\n\t\t\tIL_001d: ldloc.1\n\t\t\tIL_001e: call !!0 [System.Threading]System.Threading.Interlocked::CompareExchange\u003cclass [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler\u003e(!!0\u0026, !!0, !!0)\n\t\t\tIL_0023: stloc.0\n\t\t\tIL_0024: ldloc.0\n\t\t\tIL_0025: ldloc.1\n\t\t\tIL_0026: bne.un.s IL_0007\n\t\t// end loop\n\t\tIL_0028: ret\n\t} // end of method Target::remove_PropertyChanged\n\n\t.method public hidebysig specialname \n\t\tinstance void set_Property (\n\t\t\tstring 'value'\n\t\t) cil managed \n\t{\n\t\t// Header size: 1\n\t\t// Code size: 21 (0x15)\n\t\t.maxstack 8\n\n\t\tIL_0000: nop\n\t\tIL_0001: ldarg.0\n\t\tIL_0002: ldarg.1\n\t\tIL_0003: stfld string Target::'property'\n\t\tIL_0008: ldarg.0\n\t\tIL_0009: ldstr \"Property\"\n\t\tIL_000e: call instance void Target::OnPropertyChanged(string)\n\t\tIL_0013: nop\n\t\tIL_0014: ret\n\t} // end of method Target::set_Property\n\n\t// Events\n\t.event [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler PropertyChanged\n\t{\n\t\t.addon instance void Target::add_PropertyChanged(class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler)\n\t\t.removeon instance void Target::remove_PropertyChanged(class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler)\n\t}\n\n\n\t// Properties\n\t.property instance string Property()\n\t{\n\t\t.get instance string Target::get_Property()\n\t\t.set instance void Target::set_Property(string)\n\t}\n\n} // end of class Target\n```\n\u003csup\u003e\u003ca href='/src/Tests/Tests.TypeDefinitionUsage.verified.il#L1-L199' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-Tests.TypeDefinitionUsage.verified.il' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\nA string for the type name can also be used:\n\n\u003c!-- snippet: TypeNameUsage --\u003e\n\u003ca id='snippet-TypeNameUsage'\u003e\u003c/a\u003e\n```cs\n[Test]\npublic async Task TypeNameUsage()\n{\n    using var file = new PEFile(assemblyPath);\n    await Verify(new TypeToDisassemble(file, \"Target\"));\n}\n```\n\u003csup\u003e\u003ca href='/src/Tests/Tests.cs#L25-L34' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-TypeNameUsage' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\n### Verify Method\n\n\u003c!-- snippet: MethodNameUsage --\u003e\n\u003ca id='snippet-MethodNameUsage'\u003e\u003c/a\u003e\n```cs\n[Test]\npublic async Task MethodNameUsage()\n{\n    using var file = new PEFile(assemblyPath);\n    await Verify(\n        new MethodToDisassemble(\n            file,\n            \"Target\",\n            \"OnPropertyChanged\"));\n}\n```\n\u003csup\u003e\u003ca href='/src/Tests/Tests.cs#L36-L49' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-MethodNameUsage' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\nResult:\n\n\u003c!-- snippet: Tests.MethodNameUsage.verified.il --\u003e\n\u003ca id='snippet-Tests.MethodNameUsage.verified.il'\u003e\u003c/a\u003e\n```il\n.method private hidebysig \n\tinstance void OnPropertyChanged (\n\t\t[opt] string propertyName\n\t) cil managed \n{\n\t.param [1] = nullref\n\t\t.custom instance void [System.Runtime]System.Runtime.CompilerServices.CallerMemberNameAttribute::.ctor() = (\n\t\t\t01 00 00 00\n\t\t)\n\t// Header size: 1\n\t// Code size: 26 (0x1a)\n\t.maxstack 8\n\n\tIL_0000: ldarg.0\n\tIL_0001: ldfld class [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler Target::PropertyChanged\n\tIL_0006: dup\n\tIL_0007: brtrue.s IL_000c\n\n\tIL_0009: pop\n\tIL_000a: br.s IL_0019\n\n\tIL_000c: ldarg.0\n\tIL_000d: ldarg.1\n\tIL_000e: newobj instance void [System.ObjectModel]System.ComponentModel.PropertyChangedEventArgs::.ctor(string)\n\tIL_0013: callvirt instance void [System.ObjectModel]System.ComponentModel.PropertyChangedEventHandler::Invoke(object, class [System.ObjectModel]System.ComponentModel.PropertyChangedEventArgs)\n\tIL_0018: nop\n\n\tIL_0019: ret\n} // end of method Target::OnPropertyChanged\n```\n\u003csup\u003e\u003ca href='/src/Tests/Tests.MethodNameUsage.verified.il#L1-L29' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-Tests.MethodNameUsage.verified.il' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\n### Verify Property\n\u003c!-- snippet: PropertyPartsUsage --\u003e\n\u003ca id='snippet-PropertyPartsUsage'\u003e\u003c/a\u003e\n```cs\n[Test]\npublic async Task PropertyPartsUsage()\n{\n    using var file = new PEFile(assemblyPath);\n    await Verify(\n        new PropertyToDisassemble(\n            file,\n            \"Target\",\n            \"Property\",\n            PropertyParts.GetterAndSetter));\n}\n```\n\u003csup\u003e\u003ca href='/src/Tests/Tests.cs#L66-L80' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-PropertyPartsUsage' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\nResult:\n\n\u003c!-- snippet: Tests.PropertyPartsUsage.verified.il --\u003e\n\u003ca id='snippet-Tests.PropertyPartsUsage.verified.il'\u003e\u003c/a\u003e\n```il\n.method public hidebysig specialname \n\tinstance string get_Property () cil managed \n{\n\t// Header size: 1\n\t// Code size: 7 (0x7)\n\t.maxstack 8\n\n\tIL_0000: ldarg.0\n\tIL_0001: ldfld string Target::'property'\n\tIL_0006: ret\n} // end of method Target::get_Property\n.method public hidebysig specialname \n\tinstance void set_Property (\n\t\tstring 'value'\n\t) cil managed \n{\n\t// Header size: 1\n\t// Code size: 21 (0x15)\n\t.maxstack 8\n\n\tIL_0000: nop\n\tIL_0001: ldarg.0\n\tIL_0002: ldarg.1\n\tIL_0003: stfld string Target::'property'\n\tIL_0008: ldarg.0\n\tIL_0009: ldstr \"Property\"\n\tIL_000e: call instance void Target::OnPropertyChanged(string)\n\tIL_0013: nop\n\tIL_0014: ret\n} // end of method Target::set_Property\n```\n\u003csup\u003e\u003ca href='/src/Tests/Tests.PropertyPartsUsage.verified.il#L1-L30' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-Tests.PropertyPartsUsage.verified.il' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\n\n### Settings\n\nStarting with version 3.2 the generated IL is normalized by default, to avoid failed tests only because the binary layout has changed:\n\n- types and members are sorted by name\n- RVA adress comments are stripped \n\nTo turn of the sorting, use the `DontNormalizeIL` setting. It will then decompile IL reflecting the original layout:\n\n\u003c!-- snippet: BackwardCompatibility --\u003e\n\u003ca id='snippet-BackwardCompatibility'\u003e\u003c/a\u003e\n```cs\n[Test]\npublic async Task BackwardCompatibility()\n{\n    using var file = new PEFile(assemblyPath);\n    await Verify(new TypeToDisassemble(file, \"Target\"))\n        .DontNormalizeIl();\n}\n```\n\u003csup\u003e\u003ca href='/src/Tests/Tests.cs#L185-L195' title='Snippet source file'\u003esnippet source\u003c/a\u003e | \u003ca href='#snippet-BackwardCompatibility' title='Start of snippet'\u003eanchor\u003c/a\u003e\u003c/sup\u003e\n\u003c!-- endSnippet --\u003e\n\n## Icon\n\n[Gem](https://thenounproject.com/term/shatter/1084820/) designed by [Bakunetsu Kaito](https://thenounproject.com/sevenknights_friendship/) from [The Noun Project](https://thenounproject.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverifytests%2Fverify.icsharpcode.decompiler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fverifytests%2Fverify.icsharpcode.decompiler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverifytests%2Fverify.icsharpcode.decompiler/lists"}