github icsharpcode/ILSpy v10.0-preview1
ILSpy 10.0 Preview 1

pre-releaseone month ago

This preview release is based on preview 6 of .NET 10.0. Please make sure that you have it installed on your machine beforehand.

New Language Features

  • #3467: C# 12 InlineArrays
  • #3500: Added .NET 10 as test target
  • #3500: Added minimal language feature support to successfully detect new code patterns used in .NET 10

Enhancements

  • #3519: Add API diff feature. Please see the PR for how this feature works, and in the collapsed region at the end of the release notes how such an API diff report could look like (full file is attached to release as ICSharpCode.Decompiler9.1to10Preview1Changes_ApiDiff.md).
  • #3494: Add dynamic ILSpy settings options to ILSpyCmd
  • #3489: Make WholeProjectDecompiler.CreateDecompiler protected virtual to make the decompilation pipeline extensible.

Contributions

  • Add configuration option to check for overflow and underflow (see #3484 by @ds5678)
  • Allow creating a MetadataFile with a MetadataReader / MetadataStringDecoder (see #3487 by @lordmilko)
  • Add an option to not transform Activator.CreateInstance<T>() to new T() (see #3497 by @DoctorKrolic)
  • TargetFramework and TargetServices APIs are now public (see #3501 by @nikitalita)
  • Support disassembling single file bundle for ILSpy (see #3398 by @cshung)
  • Fix stack overflow exception in CSharpResolver (see #3471 by @ds5678)
  • Handle explicit optional parameter after default parameter (see #3470 by @ds5678)
  • Fix disassembler output, correcting flag(NUM) to flags(NUM) (see #3473 by @hez2010)
  • Fix null reference exception when writing resource files (see #3474 by @ds5678)
  • Fix SDK-style (modern) inter-project references (see #3502 by @petercrabtree)
  • Fix incorrect method match for static methods with instance signature (see #3504 by @MSchmoecker)

Performance

  • #3486: Remove XML serialization from DecompilerSettings in ILSpy

Bug fixes

  • Fix #3464: Missing cast in interpolated string
  • Fix #3482: Drag and Drop is no longer working in the Assemblies tree view.
  • Fix #3492: Do not crash, if field used by RuntimeHelpers.InitializeArray is malformed.

And many other fixes, for a full list click here.

ICSharpCode.Decompiler Assembly Changes (API diff)

Changed Types

ICSharpCode.Decompiler.DecompilerSettings

Member Type Operation
Clone() : DecompilerSettings Method Removed
ParamsCollections : bool Property Added
UseObjectCreationOfGenericTypeParameter : bool Property Added
InlineArrays : bool Property Added
CheckForOverflowUnderflow : bool Property Added
Clone() : DecompilerSettings Method Added

ICSharpCode.Decompiler.Solution.SolutionCreator

Member Type Operation
WriteSolutionFile(string, IEnumerable<ProjectItem>) : void Method Removed
WriteSolutionFile(string, List<ProjectItem>) : void Method Added

ICSharpCode.Decompiler.Semantics.Conversion

Member Type Operation
InlineArrayConversion : Conversion Field Added

ICSharpCode.Decompiler.TypeSystem.KnownAttribute

Member Type Operation
ParamCollection : KnownAttribute Field Added
InlineArray : KnownAttribute Field Added

ICSharpCode.Decompiler.TypeSystem.TypeSystemOptions

Member Type Operation
ParamsCollections : TypeSystemOptions Field Added

ICSharpCode.Decompiler.TypeSystem.TypeSystemExtensions

Member Type Operation
IsArrayInterfaceType(this IType) : bool Method Added
IsInlineArrayType(this IType) : bool Method Added
GetInlineArrayLength(this IType) : int? Method Added
GetInlineArrayElementType(this IType) : IType Method Added
IsDefaultValueAssignmentAllowed(this IParameter) : bool Method Added

ICSharpCode.Decompiler.Metadata.MetadataFile

Member Type Operation
MetadataFile(MetadataFileKind, string, MetadataReaderProvider, MetadataReaderOptions, int, bool) Constructor Removed
MetadataFile(MetadataFileKind, string, MetadataReaderProvider, MetadataReaderOptions, int, bool, MetadataStringDecoder?) Constructor Added
MetadataFile(MetadataFileKind, string, MetadataReader, int, bool) Constructor Added

ICSharpCode.Decompiler.Metadata.PEFile

Member Type Operation
PEFile(string, PEStreamOptions, MetadataReaderOptions) Constructor Removed
PEFile(string, Stream, PEStreamOptions, MetadataReaderOptions) Constructor Removed
PEFile(string, PEReader, MetadataReaderOptions) Constructor Removed
PEFile(string, PEStreamOptions, MetadataReaderOptions, MetadataStringDecoder?) Constructor Added
PEFile(string, Stream, PEStreamOptions, MetadataReaderOptions, MetadataStringDecoder?) Constructor Added
PEFile(string, PEReader, MetadataReaderOptions, MetadataStringDecoder?) Constructor Added

ICSharpCode.Decompiler.IL.OpCode

Member Type Operation
LdElemaInlineArray : OpCode Field Added

ICSharpCode.Decompiler.IL.Block

Member Type Operation
GetContainingStatement(ILInstruction) : ILInstruction? Method Added

ICSharpCode.Decompiler.IL.ILInstruction

Member Type Operation
Extract(ILTransformContext) : ILVariable Method Removed
MatchLdElemaInlineArray(out IType?, out ILInstruction?) : bool Method Added
Extract(ILTransformContext) : ILVariable? Method Added

ICSharpCode.Decompiler.CSharp.LanguageVersion

Member Type Operation
CSharp13_0 : LanguageVersion Field Added

ICSharpCode.Decompiler.CSharp.OutputVisitor.InsertParenthesesVisitor

Member Type Operation
VisitInterpolation(Interpolation) : void Method Added

ICSharpCode.Decompiler.CSharp.ProjectDecompiler.IProjectInfoProvider

Member Type Operation
CheckForOverflowUnderflow : bool Property Added

Added Types

ICSharpCode.Decompiler.IL.LdElemaInlineArray

Member Type Operation
ArraySlot : SlotInfo Property Added
IndicesSlot : SlotInfo Property Added
Type : IType Property Added
Array : ILInstruction Property Added
Indices : InstructionCollection<ILInstruction> Property Added
ResultType : StackType Property Added
IsReadOnly : bool Property Added
DirectFlags : InstructionFlags Property Added
LdElemaInlineArray(IType, ILInstruction, params ILInstruction[]) Constructor Added
Clone() : ILInstruction Method Added
WriteTo(ITextOutput, ILAstWritingOptions) : void Method Added
AcceptVisitor(ILVisitor) : void Method Added
AcceptVisitor<T>(ILVisitor<T>) : T Method Added
AcceptVisitor<C,T>(ILVisitor<C,T>, C) : T Method Added

ICSharpCode.Decompiler.CSharp.ProjectDecompiler.TargetFramework

Member Type Operation
Identifier : string Property Added
Moniker : string Property Added
VersionString : string Property Added
VersionNumber : int Property Added
Profile : string Property Added
IsPortableClassLibrary : bool Property Added
TargetFramework(string, int, string) Constructor Added

ICSharpCode.Decompiler.CSharp.ProjectDecompiler.TargetServices

Member Type Operation
DetectTargetFramework(MetadataFile) : TargetFramework Method Added
GetPlatformName(PEFile) : string Method Added
DetectTargetFrameworkNET20(MetadataFile, IAssemblyResolver, TargetFramework) : TargetFramework Method Added

Don't miss a new ILSpy release

NewReleases is sending notifications on new releases.