9 ::System.Runtime.Remoting
10 ::System.Serviceprocess
13 ::Microsoft.VisualBasic
14 ::System.DirectoryServices
18 ::System.Configuration.Install
23 ::System.Runtime.WindowsRuntime
24 ::System.Runtime.WindowsRuntime.UI.Xaml
25 ::System.Runtime.Serialization
28 ::PresentationFramework
29 ::System.EnterpriseServices
30 ::System.Collections.Concurrent
32 ::System.ComponentModel.Annotations
33 ::System.ComponentModel
34 ::System.ComponentModel.EventBasedAsync
35 ::System.Diagnostics.Contracts
36 ::System.Diagnostics.Debug
37 ::System.Diagnostics.Tools
38 ::System.Diagnostics.Tracing
39 ::System.Dynamic.Runtime
40 ::System.Globalization
43 ::System.Linq.Expressions
44 ::System.Linq.Parallel
45 ::System.Linq.Queryable
47 ::System.Net.NetworkInformation
48 ::System.Net.Primitives
52 ::System.Reflection.Emit
53 ::System.Reflection.Emit.ILGeneration
54 ::System.Reflection.Emit.Lightweight
55 ::System.Reflection.Extensions
56 ::System.Reflection.Primitives
57 ::System.Resources.ResourceManager
59 ::System.Runtime.Extensions
60 ::System.Runtime.InteropServices
61 ::System.Runtime.InteropServices.WindowsRuntime
62 ::System.Runtime.Numerics
63 ::System.Runtime.Serialization.Json
64 ::System.Runtime.Serialization.Primitives
65 ::System.Runtime.Serialization.Xml
66 ::System.Security.Principal
67 ::System.ServiceModel.Duplex
68 ::System.ServiceModel.Http
69 ::System.ServiceModel.NetTcp
70 ::System.ServiceModel.Primitives
71 ::System.ServiceModel.Security
72 ::System.Text.Encoding
73 ::System.Text.Encoding.Extensions
74 ::System.Text.RegularExpressions
76 ::System.Threading.Tasks
77 ::System.Threading.Tasks.Parallel
79 ::System.Xml.ReaderWriter
80 ::System.Xml.XDocument
81 ::System.Xml.XmlSerializer
82 ::Windows.ApplicationModel
86 ::Windows.Globalization
102 rem This script compares ngen and crossgen output for framework assemblies
105 SETLOCAL ENABLEDELAYEDEXPANSION
108 IF /I "%_BuildArch%" == "amd64" set BITNESS=64
109 set FRAMEWORKDIR=%SYSTEMROOT%\Microsoft.NET\Framework%BITNESS%\%COMPlus_Version%
110 IF "%BITNESS%" == "" set BITNESS=32
112 set NATIVEIMAGEPATH=%FRAMEWORKDIR%\assembly\NativeImages_%COMPlus_Version%_%BITNESS%
114 rem rmdir /S /Q %NATIVEIMAGEPATH%
115 rem %FRAMEWORKDIR%\ngen install mscorlib
116 rem %FRAMEWORKDIR%\ngen update
118 %FRAMEWORKDIR%\gacutil /if %_NTTREE%\System.Runtime.WindowsRuntime.dll
119 %FRAMEWORKDIR%\gacutil /if %_NTTREE%\System.Runtime.WindowsRuntime.UI.Xaml.dll
121 set ILIMAGEPATH=%_NTTREE%\il
122 rmdir /S /Q %ILIMAGEPATH%
123 if not exist %ILIMAGEPATH% mkdir %ILIMAGEPATH%
125 rem Collect all files from the GAC into ILIMAGEPATH directory to guaranteed that we get the exact same IL images
126 rem between ngen and crossgen. It is important on non-x86 builds because of non-x86 layouts pull files from x86 build.
127 forfiles /P %FRAMEWORKDIR%\assembly\GAC_%BITNESS% /M *.dll /S /C "cmd /c copy @path %ILIMAGEPATH%\@file > nul"
128 forfiles /P %FRAMEWORKDIR%\assembly\GAC_MSIL /M *.dll /S /C "cmd /c copy @path %ILIMAGEPATH%\@file > nul"
129 rem clr.dll and clrjit.dll are required for timestamps
130 copy %FRAMEWORKDIR%\clr.dll %ILIMAGEPATH%\clr.dll >nul
131 copy %FRAMEWORKDIR%\clrjit.dll %ILIMAGEPATH%\clrjit.dll >nul
133 set CROSSGENIMAGEPATH=%_NTTREE%\ni
134 rmdir /S /Q %CROSSGENIMAGEPATH%
135 if not exist %CROSSGENIMAGEPATH% mkdir %CROSSGENIMAGEPATH%
137 set WINMDPATH=%WINDIR%\System32\WinMetadata
142 for /f "eol=; usebackq tokens=1,2,3* delims=,:" %%I in ("%SELF%") DO (
143 if "%%I"=="END_OF_LIST" goto LDone
144 call :ProcessFile %%I
145 if "!FAILED!"=="1" goto LFailed
159 call :ProbeFile %ILIMAGEPATH%\%1.dll
160 call :ProbeFile %WINMDPATH%\%1.winmd
162 if "%FILEPATH%" == "" ( echo File not found: %1 & goto LError )
165 echo ========= COMPILE and COMPARE %1 ==========
166 echo ngen install /nodependencies %FILEPATH%
167 ngen install /nodependencies %FILEPATH%
169 echo %_NTTREE%\crossgen /platform_assemblies_paths %ILIMAGEPATH%;%CROSSGENIMAGEPATH% /Platform_Winmd_Paths %WINMDPATH% /in %FILEPATH% /out %CROSSGENIMAGEPATH%\%1.ni.dll
170 %_NTTREE%\crossgen /platform_assemblies_paths %ILIMAGEPATH%;%CROSSGENIMAGEPATH% /Platform_Winmd_Paths %WINMDPATH% /in %FILEPATH% /out %CROSSGENIMAGEPATH%\%1.ni.dll
171 IF NOT "%ERRORLEVEL%"=="0" set FAILED=1
173 forfiles /P %NATIVEIMAGEPATH% /M %1.ni.dll /S /C "cmd /c echo Compare: @path & fc /B @path %CROSSGENIMAGEPATH%\%1.ni.dll > %CROSSGENIMAGEPATH%\diff.txt & IF NOT ERRORLEVEL 1 del %CROSSGENIMAGEPATH%\diff.txt"
174 IF not exist %CROSSGENIMAGEPATH%\diff.txt goto LExit
175 echo ----- DIFFERENT -----
181 if NOT "%FILEPATH%" == "" goto LExit
182 if NOT exist "%1" goto LExit