.NET Core CLR (coreclr)
June 5, 2025 ยท View on GitHub
.NET Core complete runtime implementation. Also includes IL Assembler, IL Disassembler, RyuJIT, the .NET GC, native interop and many other components.
Some of these components have been modified and also known as 3F's IL Assembler on coreclr (github/3F) specialy for https://github.com/3F/DllExport and for other related purposes.
Licensed under the MIT License (MIT)
Copyright (c) .NET Foundation and Contributors
Copyright (c) 2016-2025 Denis Kuzmin <x-3F@outlook.com> github/3F
ILAsm on coreclr
3F's IL Assembler (ILAsm) + IL Disassembler (ILDasm) https://github.com/3F/coreclr
/REBASE
Rebase system object in order netstandard > System.Runtime > mscorlib is available starting from 4.700.2+
.typeref custom definitions
Starting from 9.3.0+ you can change the binding of any type for specific assemblies using the following .typeref directive:
grammar:
assemblyDecl : '.hash' 'algorithm' int32
| secDecl
| asmOrRefDecl
| '.typeref' dottedName 'at' dottedName
| '.typeref' dottedName 'any' 'at' dottedName
| '.typeref' dottedName 'constraint' 'deny'
| '.typeref' dottedName 'constraint' 'any' 'deny'
| '.typeref' dottedName 'assert'
| '.typeref' dottedName 'any' 'assert'
;
The format for changing the link:
.typeref 'Type' [any] at 'ResolutionScope'
Assertion of type declaration by current module (first at Module tables):
.typeref 'Type' [any] assert
//alias: .typeref 'Type' [any] at ''
The format for rejecting defined records (predefined by the user and the .assembler declaration):
.typeref 'Type' constraint [any] deny
Note keyword any points to multiple definitions starting from the specified Name
For example, predefined assembler's .typeref directives (when /REB is activated) will mean something like:
// 9.3.0+
.assembly 'ClassLibrary1'
{
.typeref 'System.' any at 'mscorlib'
.typeref 'System' at 'mscorlib'
.typeref 'System.Span`' any assert
.typeref 'System.ReadOnlySpan`' any assert
.typeref 'System.Memory`' any assert
.typeref 'System.ReadOnlyMemory`' any assert
.typeref 'System.MemoryExtensions' assert
.custom instance void ...
.custom instance void ...
.hash algorithm 0x00008004
.ver 1:0:0:0
}
Multiple definitions are competitive or interchangeable. Priority is given to the last from top to bottom. For example,
.typeref 'System.' any at 'System.Runtime'
.typeref 'System.Math' constraint deny
.typeref 'System.IO.' constraint any deny
.typeref 'System.' any at 'mscorlib'
.typeref 'System.' any assert
are equal to
.typeref 'System.' any assert
etc.
/CVRES
.res / .obj
In order to provide a compatible resource converter to obj COFF-format when assembling, use /CVRES (/CVR) key:
ilasm ... /CVR=cvtres.exe
Automatic search for resource converter
Automatic search is available starting from 9.3.0+ by using hMSBuild and other predefined falbacks to resolve .res / .obj processing automatically.
.line with support for both PDB types (MSF + Portable(BSJB))
NuGet Package Preferences
$(ILAsm_RootPkg)- path to ILAsm package folder.$(ILAsm_PathToBin)- path to\binfolder., e.g. $(ILAsm_PathToBin)Win.x64\ilasm.exe$(ILAsm_W64Bin)and$(ILAsm_W86Bin)- e.g. $(ILAsm_W64Bin)ildasm.exe
Symbols (PDB) are available through GitHub Releases: https://github.com/3F/coreclr/releases