• L
    [release/6.0-preview4][wasm] Fix Blazor AOT builds inside Visual Studio (#52078) · bfd6048a
    Larry Ewing 提交于
    * [wasm] Build tasks for net472 also (#51959)
    
    * [wasm] Fix loading WebAssembly tasks in VS
    
    - In case of `WasmAppBuilder.dll`, we were packaging only the task assembly, and
      `System.Reflection.MetadataLoadContext` for net472, same as net6.0 .
    
    - But for net472, VS fails with errors like:
    
    ```
    C:\Program Files\dotnet\packs\Microsoft.NET.Runtime.WebAssembly.Sdk\6.0.0-preview.4.21222.10\Sdk\WasmApp.targets(424,4): Error MSB4018: The "PInvokeTableGenerator" task failed unexpectedly.
    System.IO.FileNotFoundException: Could not load file or assembly 'System.Reflection.Metadata, Version=1.4.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
    File name: 'System.Reflection.Metadata, Version=1.4.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
       at System.Reflection.MetadataLoadContext.LoadFromStreamCore(Stream peStream)
       at System.Reflection.MetadataLoadContext.LoadFromAssemblyPath(String assemblyPath)
       at System.Reflection.PathAssemblyResolver.Resolve(MetadataLoadContext context, AssemblyName assemblyName)
       at System.Reflection.MetadataLoadContext.TryFindAssemblyByCallingResolveHandler(RoAssemblyName refName)
       at System.Reflection.MetadataLoadContext.ResolveToAssemblyOrExceptionAssembly(RoAssemblyName refName)
       at System.Reflection.MetadataLoadContext.TryResolveAssembly(RoAssemblyName refName, Exception& e)
       at System.Reflection.MetadataLoadContext.TryGetCoreAssembly(String coreAssemblyName, Exception& e)
       at System.Reflection.TypeLoading.CoreTypes..ctor(MetadataLoadContext loader, String coreAssemblyName)
       at System.Reflection.MetadataLoadContext..ctor(MetadataAssemblyResolver resolver, String coreAssemblyName)
       at PInvokeTableGenerator.GenPInvokeTable(String[] pinvokeModules, String[] assemblies) in /Users/radical/dev/r2/src/tasks/WasmAppBuilder/PInvokeTableGenerator.cs:line 42
       at PInvokeTableGenerator.Execute() in /Users/radical/dev/r2/src/tasks/WasmAppBuilder/PInvokeTableGenerator.cs:line 28
       at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
       at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
    ```
    
    - So, bundle all the dependent assemblies from the publish folder
    
    * Address review feedback
    
    * Update src/tasks/AotCompilerTask/MonoAOTCompiler.csproj
    Co-authored-by: NDaniel Plaisted <dsplaisted@gmail.com>
    
    * Update src/tasks/AotCompilerTask/MonoAOTCompiler.csproj
    Co-authored-by: NDaniel Plaisted <dsplaisted@gmail.com>
    
    * Update src/tasks/WasmAppBuilder/WasmAppBuilder.csproj
    Co-authored-by: NDaniel Plaisted <dsplaisted@gmail.com>
    
    * Update src/tasks/WasmAppBuilder/WasmAppBuilder.csproj
    Co-authored-by: NDaniel Plaisted <dsplaisted@gmail.com>
    
    * Apply suggestions from code review
    Co-authored-by: NDaniel Plaisted <dsplaisted@gmail.com>
    
    * Use a property for net472
    Co-authored-by: NAnkit Jain <radical@gmail.com>
    Co-authored-by: NDaniel Plaisted <dsplaisted@gmail.com>
    bfd6048a
MonoAOTCompiler.cs 17.5 KB