* Add comments on headers that gets parsed by Mono linker for whoever touches this next
* add more comments to the targets file
<_ILLinkTasksDir Condition="'$(MSBuildRuntimeType)' == 'Core'">$(_ILLinkTasksToolsDir)/netcoreapp2.0/</_ILLinkTasksDir>
</PropertyGroup>
- <!-- Generates the xml root descriptor file for ILLink. The file contains roots required by the runtime. -->
+ <!--
+ Generates the xml root descriptor file for ILLink. The file contains roots required by the runtime.
+ This gets generated by mono IL linker which lives in https://github.com/mono/linker
+ If it fails, it'll spit out some cryptic error messages that's hard to debug.
+ You can debug it by setting /maxcpucount:1 in the msbuild command to force it to not spawn up a bunch
+ of child processes, and attach a debugger to msbuild. After that you can set a bp on the exception
+ you are seeing.
+ -->
<UsingTask TaskName="CreateRuntimeRootILLinkDescriptorFile" AssemblyFile="$(_ILLinkTasksDir)ILLink.Tasks.dll" />
<Target Name="_CreateILLinkRuntimeRootDescriptorFile"
Inputs="$(_NamespaceFilePath);$(_MscorlibFilePath);$(_CortypeFilePath);$(_RexcepFilePath);$(_ILLinkTrimXmlFilePath)"
// This describes information about the COM+ primitive types
+//
+// Note: This file gets parsed by the Mono IL Linker (https://github.com/mono/linker/) which may throw an exception during parsing.
+// Specifically, this (https://github.com/mono/linker/blob/master/corebuild/integration/ILLink.Tasks/CreateRuntimeRootDescriptorFile.cs) will try to
+// parse this header, and it may throw an exception while doing that. If you edit this file and get a build failure on msbuild.exe D:\repos\coreclr\build.proj
+// you might want to check out the parser linked above.
+//
+
+
#define NO_SIZE ((BYTE)-1)
// TYPEINFO(type (CorElementType), namespace, class, size, gcType, isArray,isPrim, isFloat,isModifier,isGenVariable)
// examine vm\namespace.h. If it is not present, define it there and then proceed to use it below.
//
+//
+// Note: This file gets parsed by the Mono IL Linker (https://github.com/mono/linker/) which may throw an exception during parsing.
+// Specifically, this (https://github.com/mono/linker/blob/master/corebuild/integration/ILLink.Tasks/CreateRuntimeRootDescriptorFile.cs) will try to
+// parse this header, and it may throw an exception while doing that. If you edit this file and get a build failure on msbuild.exe D:\repos\coreclr\build.proj
+// you might want to check out the parser linked above.
+//
//
// Note: The SM_* and IM_* are signatures defined in file:metasig.h using IM() and SM() macros.
//
// This file defines namespaces used by the runtime.
//
+// Note: This file gets parsed by the Mono IL Linker (https://github.com/mono/linker/) which may throw an exception during parsing.
+// Specifically, this (https://github.com/mono/linker/blob/master/corebuild/integration/ILLink.Tasks/CreateRuntimeRootDescriptorFile.cs) will try to
+// parse this header, and it may throw an exception while doing that. If you edit this file and get a build failure on msbuild.exe D:\repos\coreclr\build.proj
+// you might want to check out the parser linked above.
+//
// name for your HResult to the list below so it can be thrown from
// within the EE and recognized in Interop scenarios.
+//
+// Note: This file gets parsed by the Mono IL Linker (https://github.com/mono/linker/) which may throw an exception during parsing.
+// Specifically, this (https://github.com/mono/linker/blob/master/corebuild/integration/ILLink.Tasks/CreateRuntimeRootDescriptorFile.cs) will try to
+// parse this header, and it may throw an exception while doing that. If you edit this file and get a build failure on msbuild.exe D:\repos\coreclr\build.proj
+// you might want to check out the parser linked above.
+//
+
// This is an exhaustive list of all exceptions that can be
// thrown by the EE itself. If you add to this list the IL spec