|
82 | 82 | <!-- /obj/<<configuration>>/<<targetframework>>/blazor/linker.descriptor.xml -->
|
83 | 83 | <GeneratedBlazorLinkerDescriptor>$(BlazorIntermediateOutputPath)linker.descriptor.xml</GeneratedBlazorLinkerDescriptor>
|
84 | 84 |
|
| 85 | + <_TypeGranularityLinkerDescriptor>$(BlazorIntermediateOutputPath)linker.typegranularityconfig.xml</_TypeGranularityLinkerDescriptor> |
| 86 | + |
85 | 87 | <!-- /obj/<<configuration>>/<<targetframework>>/blazor/linker/ -->
|
86 | 88 | <BlazorIntermediateLinkerOutputPath>$(BlazorIntermediateOutputPath)linker/</BlazorIntermediateLinkerOutputPath>
|
87 | 89 |
|
|
159 | 161 | <Target
|
160 | 162 | Name="_ResolveBlazorOutputsWhenLinked"
|
161 | 163 | Condition="'$(BlazorLinkOnBuild)' == 'true'"
|
162 |
| - DependsOnTargets="_GenerateBlazorLinkerDescriptor;_LinkBlazorApplication"> |
| 164 | + DependsOnTargets="_PrepareBlazorLinkerInputs;_GenerateBlazorLinkerDescriptor;_GenerateTypeGranularLinkerDescriptor;_LinkBlazorApplication"> |
163 | 165 |
|
164 | 166 | <!-- _BlazorLinkerOutputCache records files linked during the last incremental build of the target. Read the contents and assign linked files to be copied to the output. -->
|
165 | 167 | <ReadLinesFromFile File="$(_BlazorLinkerOutputCache)">
|
166 | 168 | <Output TaskParameter="Lines" ItemName="_BlazorResolvedAssembly"/>
|
167 | 169 | </ReadLinesFromFile>
|
168 | 170 | </Target>
|
169 | 171 |
|
| 172 | + <Target Name="_PrepareBlazorLinkerInputs"> |
| 173 | + <ItemGroup> |
| 174 | + <_BlazorRuntimeCopyLocalItems Include="@(RuntimeCopyLocalItems)" /> |
| 175 | + |
| 176 | + <!-- |
| 177 | + Any assembly from a package reference that starts with System. file name is allowed to be linked. |
| 178 | + Assemblies from Microsoft.AspNetCore and Microsoft.Extensions, are also linked but with TypeGranularity. |
| 179 | + --> |
| 180 | + <_BlazorRuntimeCopyLocalItems IsLinkable="true" Condition="$([System.String]::Copy('%(Filename)').StartsWith('System.'))" /> |
| 181 | + <_BlazorRuntimeCopyLocalItems IsLinkable="true" TypeGranularity="true" Condition="$([System.String]::Copy('%(Filename)').StartsWith('Microsoft.AspNetCore.'))" /> |
| 182 | + <_BlazorRuntimeCopyLocalItems IsLinkable="true" TypeGranularity="true" Condition="$([System.String]::Copy('%(Filename)').StartsWith('Microsoft.Extensions.'))" /> |
| 183 | + |
| 184 | + <_BlazorAssemblyToLink Include="@(_WebAssemblyBCLAssembly)" /> |
| 185 | + <_BlazorAssemblyToLink Include="@(_BlazorRuntimeCopyLocalItems)" Condition="'%(_BlazorRuntimeCopyLocalItems.IsLinkable)' == 'true'" /> |
| 186 | + |
| 187 | + <_BlazorLinkerRoot Include="@(IntermediateAssembly)" /> |
| 188 | + <_BlazorLinkerRoot Include="@(_BlazorUserRuntimeAssembly)" /> |
| 189 | + <_BlazorLinkerRoot Include="@(_BlazorRuntimeCopyLocalItems)" Condition="'%(_BlazorRuntimeCopyLocalItems.IsLinkable)' != 'true'" /> |
| 190 | + </ItemGroup> |
| 191 | + |
| 192 | + </Target> |
| 193 | + |
170 | 194 | <UsingTask TaskName="BlazorCreateRootDescriptorFile" AssemblyFile="$(BlazorTasksPath)" />
|
171 | 195 | <Target Name="_GenerateBlazorLinkerDescriptor"
|
172 | 196 | Inputs="@(IntermediateAssembly)"
|
|
186 | 210 | </ItemGroup>
|
187 | 211 | </Target>
|
188 | 212 |
|
189 |
| - <UsingTask TaskName="BlazorILLink" AssemblyFile="$(BlazorTasksPath)" /> |
190 | 213 | <UsingTask TaskName="GenerateTypeGranularityLinkingConfig" AssemblyFile="$(BlazorTasksPath)" />
|
| 214 | + <Target Name="_GenerateTypeGranularLinkerDescriptor" |
| 215 | + Inputs="@(_BlazorAssemblyToLink->WithMetadataValue('TypeGranularity', 'true'))" |
| 216 | + Outputs="$(_TypeGranularityLinkerDescriptor)"> |
| 217 | + |
| 218 | + <GenerateTypeGranularityLinkingConfig |
| 219 | + Assemblies="@(_BlazorAssemblyToLink->WithMetadataValue('TypeGranularity', 'true'))" |
| 220 | + OutputPath="$(_TypeGranularityLinkerDescriptor)" /> |
| 221 | + |
| 222 | + <ItemGroup> |
| 223 | + <BlazorLinkerDescriptor Include="$(_TypeGranularityLinkerDescriptor)" /> |
| 224 | + <FileWrites Include="$(_TypeGranularityLinkerDescriptor)" /> |
| 225 | + </ItemGroup> |
| 226 | + </Target> |
191 | 227 |
|
| 228 | + <UsingTask TaskName="BlazorILLink" AssemblyFile="$(BlazorTasksPath)" /> |
192 | 229 | <Target
|
193 | 230 | Name="_LinkBlazorApplication"
|
194 | 231 | Inputs="$(ProjectAssetsFile);
|
|
197 | 234 | $(MSBuildAllProjects)"
|
198 | 235 | Outputs="$(_BlazorLinkerOutputCache)">
|
199 | 236 |
|
200 |
| - <ItemGroup> |
201 |
| - <_BlazorDependencyAssembly Include="@(_BlazorDependencyInput)" /> |
202 |
| - <_BlazorDependencyAssembly IsLinkable="true" Condition="$([System.String]::Copy('%(Filename)').StartsWith('System.'))" /> |
203 |
| - <_BlazorDependencyAssembly IsLinkable="true" TypeGranularity="true" Condition="$([System.String]::Copy('%(Filename)').StartsWith('Microsoft.AspNetCore.'))" /> |
204 |
| - <_BlazorDependencyAssembly IsLinkable="true" TypeGranularity="true" Condition="$([System.String]::Copy('%(Filename)').StartsWith('Microsoft.Extensions.'))" /> |
205 |
| - <!-- Any assembly from a package reference that starts with System. file name is allowed to be linked --> |
206 |
| - <_BlazorRuntimeCopyLocalItems Include="@(RuntimeCopyLocalItems)" IsLinkable="$([System.String]::Copy('%(FileName)').StartsWith('System.'))" /> |
207 |
| - |
208 |
| - <_BlazorAssemblyToLink Include="@(_WebAssemblyBCLAssembly)" /> |
209 |
| - <_BlazorAssemblyToLink Include="@(_BlazorRuntimeCopyLocalItems)" Condition="'%(_BlazorRuntimeCopyLocalItems.IsLinkable)' == 'true'" /> |
210 |
| - |
211 |
| - <_BlazorLinkerRoot Include="@(IntermediateAssembly)" /> |
212 |
| - <_BlazorLinkerRoot Include="@(_BlazorUserRuntimeAssembly)" /> |
213 |
| - <_BlazorLinkerRoot Include="@(_BlazorRuntimeCopyLocalItems)" Condition="'%(_BlazorRuntimeCopyLocalItems.IsLinkable)' != 'true'" /> |
214 |
| - </ItemGroup> |
215 |
| - |
216 | 237 | <PropertyGroup>
|
217 | 238 | <_BlazorLinkerAdditionalOptions>-l $(MonoLinkerI18NAssemblies) $(AdditionalMonoLinkerOptions)</_BlazorLinkerAdditionalOptions>
|
218 | 239 | </PropertyGroup>
|
|
234 | 255 | <_DotNetHostFileName Condition=" '$(OS)' == 'Windows_NT' ">dotnet.exe</_DotNetHostFileName>
|
235 | 256 | </PropertyGroup>
|
236 | 257 |
|
237 |
| - <PropertyGroup> |
238 |
| - <_TypeGranularityLinkingConfig>$(BlazorIntermediateOutputPath)linker.typegranularityconfig.xml</_TypeGranularityLinkingConfig> |
239 |
| - </PropertyGroup> |
240 |
| - <GenerateTypeGranularityLinkingConfig Assemblies="@(_BlazorAssemblyToLink->WithMetadataValue('TypeGranularity', 'true'))" OutputPath="$(_TypeGranularityLinkingConfig)" /> |
241 |
| - <ItemGroup> |
242 |
| - <BlazorLinkerDescriptor Include="$(_TypeGranularityLinkingConfig)" /> |
243 |
| - <FileWrites Include="$(_TypeGranularityLinkingConfig)" /> |
244 |
| - </ItemGroup> |
245 |
| - |
246 | 258 | <BlazorILLink
|
247 | 259 | ILLinkPath="$(MonoLinkerPath)"
|
248 | 260 | AssemblyPaths="@(_BlazorAssemblyToLink)"
|
|
0 commit comments