Commit eb62161
Fix assembly resolution so host apps no longer need manual pre-loading
classForName's DependencyContext heuristic had three gaps that prevented
type resolution for NuGet/framework assemblies not yet loaded by the CLR:
1. Namespace-to-assembly guessing did a single dictionary lookup and gave
up. Now walks up the namespace hierarchy (e.g. Microsoft.AspNetCore.Builder
-> Microsoft.AspNetCore -> Microsoft) until a match is found.
2. DependencyContext entries stored empty paths, making Assembly.LoadFrom
impossible. Now resolves DLL filenames against AppContext.BaseDirectory.
3. The AssemblyResolve handler only checked embedded resources. Now also
consults the runtime assembly dictionary and probes the base directory,
with a ThreadStatic recursion guard to prevent infinite loops.
Includes 4 new tests: namespace walk-up resolution, runtime assembly path
verification, counter validation, and graceful failure on unknown types.1 parent 3edff47 commit eb62161
2 files changed
+148
-30
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
348 | 348 | | |
349 | 349 | | |
350 | 350 | | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
351 | 354 | | |
352 | 355 | | |
353 | | - | |
354 | | - | |
355 | | - | |
356 | | - | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
357 | 361 | | |
358 | | - | |
359 | | - | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
360 | 367 | | |
361 | | - | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
362 | 394 | | |
363 | | - | |
364 | 395 | | |
365 | 396 | | |
366 | 397 | | |
| |||
2797 | 2828 | | |
2798 | 2829 | | |
2799 | 2830 | | |
2800 | | - | |
2801 | | - | |
| 2831 | + | |
| 2832 | + | |
| 2833 | + | |
| 2834 | + | |
| 2835 | + | |
| 2836 | + | |
| 2837 | + | |
| 2838 | + | |
| 2839 | + | |
2802 | 2840 | | |
2803 | 2841 | | |
2804 | 2842 | | |
| |||
2877 | 2915 | | |
2878 | 2916 | | |
2879 | 2917 | | |
| 2918 | + | |
| 2919 | + | |
| 2920 | + | |
2880 | 2921 | | |
2881 | 2922 | | |
2882 | 2923 | | |
| |||
2920 | 2961 | | |
2921 | 2962 | | |
2922 | 2963 | | |
2923 | | - | |
| 2964 | + | |
| 2965 | + | |
| 2966 | + | |
| 2967 | + | |
2924 | 2968 | | |
2925 | | - | |
2926 | | - | |
2927 | | - | |
2928 | | - | |
| 2969 | + | |
2929 | 2970 | | |
| 2971 | + | |
2930 | 2972 | | |
2931 | | - | |
2932 | | - | |
2933 | | - | |
2934 | | - | |
2935 | | - | |
| 2973 | + | |
2936 | 2974 | | |
2937 | | - | |
2938 | | - | |
2939 | | - | |
2940 | | - | |
| 2975 | + | |
2941 | 2976 | | |
2942 | | - | |
2943 | | - | |
| 2977 | + | |
| 2978 | + | |
| 2979 | + | |
| 2980 | + | |
| 2981 | + | |
| 2982 | + | |
| 2983 | + | |
| 2984 | + | |
| 2985 | + | |
| 2986 | + | |
| 2987 | + | |
| 2988 | + | |
| 2989 | + | |
| 2990 | + | |
| 2991 | + | |
2944 | 2992 | | |
2945 | 2993 | | |
2946 | 2994 | | |
2947 | | - | |
2948 | | - | |
2949 | | - | |
2950 | | - | |
| 2995 | + | |
| 2996 | + | |
| 2997 | + | |
| 2998 | + | |
| 2999 | + | |
| 3000 | + | |
| 3001 | + | |
2951 | 3002 | | |
2952 | 3003 | | |
2953 | 3004 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
| 5 | + | |
4 | 6 | | |
5 | 7 | | |
6 | 8 | | |
| |||
102 | 104 | | |
103 | 105 | | |
104 | 106 | | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
105 | 172 | | |
0 commit comments