I am trying to introduce the .NET NativeAOT ilc.exe
compiler into the build process of my compiler. For this, I am currently calling it with the following arguments:
ilc in.dll -o out.exe
To get access to a complete version of ilc.exe
, I have built the .NET runtime from source. The build directory containing the tool also contains the full runtime needed for NativeAOT, including a 14 megabyte System.PrivateCoreLib.dll
. Still, running the above command results in the following error message:
Error: System module System.Private.CoreLib does not exists. Make sure that you specify --systemmodule
What is the correct way of specifying the system module?
System.PrivateCoreLib.dll
(and other references) are supplied as reference files with -r
, e.g.
-r:C:\Users\xxxxx\.packages\runtime.browser-wasm.microsoft.dotnet.ilcompiler\9.0.0-preview.7.24406.1\sdk\System.Private.CoreLib.dll
However, there are a lot of references for a normal C# program, and they are normally created automatically by the tooling. If you have the package downloaded, you can look at Microsoft.NetCore.Native.targets
and the WriteIlcRspFileForCompilation
target to see how they are generated.