[AOT] Make HybridWebView AOT safe using source generator - #35626
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35626Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35626" |
- Remove HybridWebView feature switch (IsHybridWebViewSupported) entirely - Remove class-level [RequiresUnreferencedCode]/[RequiresDynamicCode] from HybridWebViewHandler and platform classes - Register HybridWebViewHandler and IHybridWebViewTaskManager unconditionally - Add safe SetInvokeJavaScriptTarget<T>(T target, JsonSerializerContext) overload - Mark legacy SetInvokeJavaScriptTarget<T>(T target) as [Obsolete] - Build method cache at registration time with pre-resolved JsonTypeInfos - AOT-safe invocation path: dictionary lookup -> MethodInfo.Invoke -> PropertyInfo.GetValue -> JsonSerializer.Serialize(object, JsonTypeInfo) - Add interceptor source generator that replaces BuildMethodCache with fully typed delegates at compile time - Update tests and sample to use the new safe overload - Add 11 unit tests for BuildMethodCache (method filtering, error handling, delegate invocation) - Add device tests for interceptor-vs-fallback path verification Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The handler now exclusively uses the source-generated method cache. No suppressions, no reflection, no RUC/RDC on the invocation path. - Remove BuildMethodCache and all reflection helpers - Remove legacy fallback from InvokeDotNetAsync - InvokeDotNetAsync throws if no method cache is configured - Remove BuildMethodCache unit tests (behavior tested via device tests) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ptor Consolidates to a single interceptor namespace shared with the binding source generator. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…okeJavaScriptTarget The interceptor source generator sees T at compile time — no runtime reflection on T's members is needed. The legacy obsolete overload is RUC/RDC territory where DAM doesn't help either. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…arget overload The legacy overload without JsonSerializerContext still needs to build a method cache using reflection so InvokeDotNetAsync can dispatch. BuildMethodCacheLegacy is called lazily from InvokeDotNetAsync (internal, RUC/RDC annotated). No RUC/RDC on user-facing API. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the dictionary-based method cache with a clean internal IHybridWebViewInvoker interface: - ReflectionHybridWebViewInvoker: legacy path, RUC/RDC on class - Source-generated implementation: interceptor generates typed invoker The handler is now trivial: invoker.InvokeMethodAsync(name, args). Zero reflection, zero RUC/RDC, zero suppressions in the handler. Legacy SetInvokeJavaScriptTarget<T>(T) is now an explicit interface implementation to avoid tainting typeof(HybridWebView) with RUC. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The interceptor generates code in the consumer's assembly, which needs to implement IHybridWebViewInvoker and set IHybridWebView.Invoker. Both must be public. Invoker property hidden from IntelliSense via [EditorBrowsable(Never)]. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reset all PublicAPI.Unshipped.txt files to net11.0 base and add only the entries for our new public API surface: - IHybridWebViewInvoker interface and its InvokeMethodAsync method - IHybridWebView.Invoker property - IHybridWebView.SetInvokeJavaScriptTarget<T>(T, JsonSerializerContext) - *REMOVED* HybridWebView.SetInvokeJavaScriptTarget<T>(T) (now explicit iface) - HybridWebView.SetInvokeJavaScriptTarget<T>(T, JsonSerializerContext) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The legacy SetInvokeJavaScriptTarget<T>(T) no longer shows an obsolete warning to everyone. Instead, RUC/RDC messages guide trimming/AOT users to the safe overload. CoreCLR/MonoVM users are not bothered. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use 'is not' pattern to validate target type matches expected type at runtime instead of unsafe cast. Provides better error message if type mismatch occurs (though this should never happen since type is known at compile time via generic parameter T). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
48d7755 to
37fc3cd
Compare
|
@copilot fix these build failures: |
Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Write the InvokeDotNet response envelope manually while preserving Result as the JSON string consumed by the existing JavaScript JSON.parse path. Restore the existing InvokeDotNet device-test expectations so they keep asserting the pre-existing JSON.stringify transport shape. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep the existing test path that reads GetLastScriptResult directly; the page already stores JSON.stringify(result) and the expected strings assert that transport shape. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Handle parameterless arity checks, escaped method identifiers, and unsafe pointer parameters in generated HybridWebView dispatch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep explicit IHybridWebView invoke target/type getters null-safe before an invoker is configured while preserving the throwing Invoker getter. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/azp run maui-pr-devicetests,maui-pr-uitests |
|
Azure Pipelines successfully started running 2 pipeline(s). |
This comment has been minimized.
This comment has been minimized.
MauiBot
left a comment
There was a problem hiding this comment.
AI Review Summary
@simonrozsival — new AI review results are available based on this last commit:
3cd60c2. To request a fresh review after new comments or commits, comment/review rerun.
🗂️ Review Sessions — click to expand
🚦 Gate — Test Before & After Fix
Gate Result: ⚠️ INCONCLUSIVE
Platform: WINDOWS · Base: net11.0 · Merge base: bed36265
| Test | Without Fix (expect FAIL) | With Fix (expect PASS) |
|---|---|---|
📱 HybridWebViewTests_ExceptionHandling HybridWebViewTests_ExceptionHandling |
🛠️ BUILD ERROR | |
📱 HybridWebViewTests_InvokeDotNet HybridWebViewTests_InvokeDotNet |
🛠️ BUILD ERROR | |
📱 HybridWebViewTests_InvokeJavaScriptAsync HybridWebViewTests_InvokeJavaScriptAsync |
🛠️ BUILD ERROR | |
📱 HybridWebViewTests_SetInvokeJavaScriptTarget HybridWebViewTests_SetInvokeJavaScriptTarget |
🛠️ BUILD ERROR | |
🧪 HybridWebViewSourceGenTests HybridWebViewSourceGenTests |
🛠️ BUILD ERROR | ✅ PASS — 69s |
🧪 HybridWebViewTests HybridWebViewTests |
🛠️ BUILD ERROR | ✅ PASS — 32s |
🔴 Without fix — 📱 HybridWebViewTests_ExceptionHandling: 🛠️ BUILD ERROR · 31s
(truncated to last 15,000 chars)
ebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(845,9): error MSB3073: The command ""C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\..\tools\net6.0\..\net472\XamlCompiler.exe" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\input.json" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\output.json"" exited with code 1. [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
Build FAILED.
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(5,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(10,58): error CS0246: The type or namespace name 'IIncrementalGenerator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'GeneratorAttribute' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'Generator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,12): error CS0103: The name 'LanguageNames' does not exist in the current context [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(18,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(25,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(32,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(40,25): error CS0246: The type or namespace name 'IncrementalGeneratorInitializationContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(50,59): error CS0246: The type or namespace name 'SyntaxNode' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(64,51): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,92): error CS0246: The type or namespace name 'HashSet<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(266,43): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(276,52): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,44): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,72): error CS0246: The type or namespace name 'MemberAccessExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,115): error CS0246: The type or namespace name 'InvocationExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,17): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(299,44): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(313,55): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(325,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(336,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(341,37): error CS0246: The type or namespace name 'SourceProductionContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(845,9): error MSB3073: The command ""C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\..\tools\net6.0\..\net472\XamlCompiler.exe" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\input.json" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\output.json"" exited with code 1. [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
0 Warning(s)
38 Error(s)
Time Elapsed 00:00:16.75
🟢 With fix — 📱 HybridWebViewTests_ExceptionHandling: ⚠️ ENV ERROR · 226s
No log file found
🔴 Without fix — 📱 HybridWebViewTests_InvokeDotNet: 🛠️ BUILD ERROR · 31s
(truncated to last 15,000 chars)
ebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(845,9): error MSB3073: The command ""C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\..\tools\net6.0\..\net472\XamlCompiler.exe" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\input.json" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\output.json"" exited with code 1. [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
Build FAILED.
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(5,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(10,58): error CS0246: The type or namespace name 'IIncrementalGenerator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'GeneratorAttribute' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'Generator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,12): error CS0103: The name 'LanguageNames' does not exist in the current context [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(18,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(25,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(32,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(40,25): error CS0246: The type or namespace name 'IncrementalGeneratorInitializationContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(50,59): error CS0246: The type or namespace name 'SyntaxNode' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(64,51): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,92): error CS0246: The type or namespace name 'HashSet<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(266,43): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(276,52): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,44): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,72): error CS0246: The type or namespace name 'MemberAccessExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,115): error CS0246: The type or namespace name 'InvocationExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,17): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(299,44): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(313,55): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(325,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(336,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(341,37): error CS0246: The type or namespace name 'SourceProductionContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(845,9): error MSB3073: The command ""C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\..\tools\net6.0\..\net472\XamlCompiler.exe" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\input.json" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\output.json"" exited with code 1. [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
0 Warning(s)
38 Error(s)
Time Elapsed 00:00:16.80
🟢 With fix — 📱 HybridWebViewTests_InvokeDotNet: ⚠️ ENV ERROR · 53s
No log file found
🔴 Without fix — 📱 HybridWebViewTests_InvokeJavaScriptAsync: 🛠️ BUILD ERROR · 29s
(truncated to last 15,000 chars)
ebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(845,9): error MSB3073: The command ""C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\..\tools\net6.0\..\net472\XamlCompiler.exe" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\input.json" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\output.json"" exited with code 1. [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
Build FAILED.
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(5,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(10,58): error CS0246: The type or namespace name 'IIncrementalGenerator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'GeneratorAttribute' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'Generator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,12): error CS0103: The name 'LanguageNames' does not exist in the current context [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(18,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(25,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(32,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(40,25): error CS0246: The type or namespace name 'IncrementalGeneratorInitializationContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(50,59): error CS0246: The type or namespace name 'SyntaxNode' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(64,51): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,92): error CS0246: The type or namespace name 'HashSet<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(266,43): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(276,52): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,44): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,72): error CS0246: The type or namespace name 'MemberAccessExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,115): error CS0246: The type or namespace name 'InvocationExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,17): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(299,44): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(313,55): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(325,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(336,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(341,37): error CS0246: The type or namespace name 'SourceProductionContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(845,9): error MSB3073: The command ""C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\..\tools\net6.0\..\net472\XamlCompiler.exe" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\input.json" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\output.json"" exited with code 1. [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
0 Warning(s)
38 Error(s)
Time Elapsed 00:00:16.17
🟢 With fix — 📱 HybridWebViewTests_InvokeJavaScriptAsync: ⚠️ ENV ERROR · 52s
No log file found
🔴 Without fix — 📱 HybridWebViewTests_SetInvokeJavaScriptTarget: 🛠️ BUILD ERROR · 29s
(truncated to last 15,000 chars)
ebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(845,9): error MSB3073: The command ""C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\..\tools\net6.0\..\net472\XamlCompiler.exe" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\input.json" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\output.json"" exited with code 1. [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
Build FAILED.
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(5,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(10,58): error CS0246: The type or namespace name 'IIncrementalGenerator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'GeneratorAttribute' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'Generator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,12): error CS0103: The name 'LanguageNames' does not exist in the current context [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(18,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(25,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(32,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(40,25): error CS0246: The type or namespace name 'IncrementalGeneratorInitializationContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(50,59): error CS0246: The type or namespace name 'SyntaxNode' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(64,51): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,92): error CS0246: The type or namespace name 'HashSet<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(266,43): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(276,52): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,44): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,72): error CS0246: The type or namespace name 'MemberAccessExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,115): error CS0246: The type or namespace name 'InvocationExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,17): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(299,44): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(313,55): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(325,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(336,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(341,37): error CS0246: The type or namespace name 'SourceProductionContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets(845,9): error MSB3073: The command ""C:\Users\VssAdministrator\.nuget\packages\microsoft.windowsappsdk.winui\1.8.251105000\buildTransitive\..\tools\net6.0\..\net472\XamlCompiler.exe" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\input.json" "D:\a\1\s\artifacts\obj\Core\Release\net11.0-windows10.0.19041.0\\output.json"" exited with code 1. [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0-windows10.0.19041.0]
0 Warning(s)
38 Error(s)
Time Elapsed 00:00:16.20
🟢 With fix — 📱 HybridWebViewTests_SetInvokeJavaScriptTarget: ⚠️ ENV ERROR · 51s
No log file found
🔴 Without fix — 🧪 HybridWebViewSourceGenTests: 🛠️ BUILD ERROR · 27s
Determining projects to restore...
Restored D:\a\1\s\src\Graphics\src\Graphics\Graphics.csproj (in 996 ms).
Restored D:\a\1\s\src\Controls\src\Xaml\Controls.Xaml.csproj (in 996 ms).
Restored D:\a\1\s\src\Graphics\src\Graphics.Win2D\Graphics.Win2D.csproj (in 10 ms).
Restored D:\a\1\s\src\Essentials\src\Essentials.csproj (in 99 ms).
Restored D:\a\1\s\src\Core\src\Core.csproj (in 97 ms).
Restored D:\a\1\s\src\Controls\src\Xaml.Design\Controls.Xaml.Design.csproj (in 11 ms).
Restored D:\a\1\s\src\Controls\src\Core.Design\Controls.Core.Design.csproj (in 3 ms).
Restored D:\a\1\s\src\Controls\src\BindingSourceGen\Controls.BindingSourceGen.csproj (in 44 ms).
Restored D:\a\1\s\src\Controls\src\Core\Controls.Core.csproj (in 67 ms).
4 of 13 projects are up-to-date for restore.
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net11.0\Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net11.0\Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(3,17): error CS0234: The type or namespace name 'CodeAnalysis' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,17): error CS0234: The type or namespace name 'CodeAnalysis' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(5,17): error CS0234: The type or namespace name 'CodeAnalysis' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(10,58): error CS0246: The type or namespace name 'IIncrementalGenerator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'GeneratorAttribute' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'Generator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,12): error CS0103: The name 'LanguageNames' does not exist in the current context [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(18,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(25,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(32,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(40,25): error CS0246: The type or namespace name 'IncrementalGeneratorInitializationContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(50,59): error CS0246: The type or namespace name 'SyntaxNode' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(64,51): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,92): error CS0246: The type or namespace name 'HashSet<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(266,43): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(276,52): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,44): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,72): error CS0246: The type or namespace name 'MemberAccessExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,115): error CS0246: The type or namespace name 'InvocationExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,17): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(299,44): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(313,55): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(325,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(336,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(341,37): error CS0246: The type or namespace name 'SourceProductionContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
🟢 With fix — 🧪 HybridWebViewSourceGenTests: PASS ✅ · 69s
Determining projects to restore...
Restored D:\a\1\s\src\Graphics\src\Graphics\Graphics.csproj (in 927 ms).
Restored D:\a\1\s\src\Core\src\Core.csproj (in 967 ms).
Restored D:\a\1\s\src\Graphics\src\Graphics.Win2D\Graphics.Win2D.csproj (in 10 ms).
Restored D:\a\1\s\src\Essentials\src\Essentials.csproj (in 41 ms).
Restored D:\a\1\s\src\Core\src\HybridWebViewSourceGen\Core.HybridWebViewSourceGen.csproj (in 29 ms).
Restored D:\a\1\s\src\Controls\src\Xaml.Design\Controls.Xaml.Design.csproj (in 13 ms).
Restored D:\a\1\s\src\Controls\src\Xaml\Controls.Xaml.csproj (in 139 ms).
Restored D:\a\1\s\src\Controls\src\Core.Design\Controls.Core.Design.csproj (in 4 ms).
Restored D:\a\1\s\src\Controls\src\BindingSourceGen\Controls.BindingSourceGen.csproj (in 7 ms).
Restored D:\a\1\s\src\Controls\src\Core\Controls.Core.csproj (in 69 ms).
3 of 13 projects are up-to-date for restore.
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net11.0\Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net11.0\Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Core -> D:\a\1\s\artifacts\bin\Core\Debug\net11.0\Microsoft.Maui.dll
Controls.Core.Design -> D:\a\1\s\artifacts\bin\Controls.Core.Design\Debug\net472\Microsoft.Maui.Controls.DesignTools.dll
Controls.BindingSourceGen -> D:\a\1\s\artifacts\bin\Controls.BindingSourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.BindingSourceGen.dll
Core.HybridWebViewSourceGen -> D:\a\1\s\artifacts\bin\Core.HybridWebViewSourceGen\Debug\netstandard2.0\Microsoft.Maui.Core.HybridWebViewSourceGen.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Controls.Core -> D:\a\1\s\artifacts\bin\Controls.Core\Debug\net11.0\Microsoft.Maui.Controls.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Microsoft.AspNetCore.Components.WebView.Maui -> D:\a\1\s\artifacts\bin\Microsoft.AspNetCore.Components.WebView.Maui\Debug\net11.0\Microsoft.AspNetCore.Components.WebView.Maui.dll
Controls.Xaml.Design -> D:\a\1\s\artifacts\bin\Controls.Xaml.Design\Debug\net472\Microsoft.Maui.Controls.Xaml.DesignTools.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Controls.Xaml -> D:\a\1\s\artifacts\bin\Controls.Xaml\Debug\net11.0\Microsoft.Maui.Controls.Xaml.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Controls.SourceGen -> D:\a\1\s\artifacts\bin\Controls.SourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.SourceGen.dll
SourceGen.UnitTests -> D:\a\1\s\artifacts\bin\SourceGen.UnitTests\Debug\net11.0\Microsoft.Maui.Controls.SourceGen.UnitTests.dll
Test run for D:\a\1\s\artifacts\bin\SourceGen.UnitTests\Debug\net11.0\Microsoft.Maui.Controls.SourceGen.UnitTests.dll (.NETCoreApp,Version=v11.0)
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 11.0.0-preview.5.26256.105)
[xUnit.net 00:00:00.15] Discovering: Microsoft.Maui.Controls.SourceGen.UnitTests
[xUnit.net 00:00:00.26] Discovered: Microsoft.Maui.Controls.SourceGen.UnitTests
[xUnit.net 00:00:00.27] Starting: Microsoft.Maui.Controls.SourceGen.UnitTests
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.GeneratesDispatchForInheritedPublicMethods [2 s]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.ReportsDiagnosticForPrivateNestedInvokeTarget [189 ms]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.EscapesKeywordMethodIdentifiers [231 ms]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.ReturnSerializationDoesNotCollideWithResultParameter [224 ms]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.GeneratesArgumentCountCheckForParameterlessMethods [248 ms]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.GeneratesDispatchForInterfaceTargetMethods [281 ms]
[xUnit.net 00:00:05.05] Finished: Microsoft.Maui.Controls.SourceGen.UnitTests
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.ReportsDiagnosticForOverloadsBeforeUnsupportedMethodsAreFiltered [121 ms]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.SkipsMethodsWithUnsafePointerParameters [240 ms]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.ReportsDiagnosticForOpenGenericInvokeTarget [105 ms]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.GeneratesInterceptorWhenJsonSerializerContextDefaultIsSourceGenerated [207 ms]
Passed Microsoft.Maui.Controls.Xaml.UnitTests.SourceGen.HybridWebViewSourceGenTests.InterfaceReceiverAssignsInvokerThroughInterface [213 ms]
Test Run Successful.
Total tests: 11
Passed: 11
Total time: 5.8143 Seconds
🔴 Without fix — 🧪 HybridWebViewTests: 🛠️ BUILD ERROR · 28s
Determining projects to restore...
Restored D:\a\1\s\src\Controls\Maps\src\Controls.Maps.csproj (in 1.21 sec).
Restored D:\a\1\s\src\Core\maps\src\Maps.csproj (in 1.27 sec).
11 of 13 projects are up-to-date for restore.
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net11.0\Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net11.0\Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(3,17): error CS0234: The type or namespace name 'CodeAnalysis' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,17): error CS0234: The type or namespace name 'CodeAnalysis' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(5,17): error CS0234: The type or namespace name 'CodeAnalysis' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(10,58): error CS0246: The type or namespace name 'IIncrementalGenerator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'GeneratorAttribute' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,2): error CS0246: The type or namespace name 'Generator' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(9,12): error CS0103: The name 'LanguageNames' does not exist in the current context [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(18,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(25,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(32,26): error CS0246: The type or namespace name 'DiagnosticDescriptor' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(40,25): error CS0246: The type or namespace name 'IncrementalGeneratorInitializationContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(50,59): error CS0246: The type or namespace name 'SyntaxNode' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(64,51): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(223,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,69): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,92): error CS0246: The type or namespace name 'HashSet<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,17): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(248,29): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(266,43): error CS0246: The type or namespace name 'IMethodSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(276,52): error CS0246: The type or namespace name 'INamedTypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,44): error CS0246: The type or namespace name 'GeneratorSyntaxContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,72): error CS0246: The type or namespace name 'MemberAccessExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,115): error CS0246: The type or namespace name 'InvocationExpressionSyntax' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(287,17): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(299,44): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(313,55): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(325,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(336,42): error CS0246: The type or namespace name 'ITypeSymbol' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(341,37): error CS0246: The type or namespace name 'SourceProductionContext' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(526,25): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(538,26): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,25): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(550,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(562,57): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(565,10): error CS0246: The type or namespace name 'InterceptableLocation' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(566,10): error CS0246: The type or namespace name 'Location' could not be found (are you missing a using directive or an assembly reference?) [D:\a\1\s\src\Core\src\Core.csproj::TargetFramework=net11.0]
🟢 With fix — 🧪 HybridWebViewTests: PASS ✅ · 32s
Determining projects to restore...
Restored D:\a\1\s\src\Core\maps\src\Maps.csproj (in 1.18 sec).
Restored D:\a\1\s\src\Controls\Maps\src\Controls.Maps.csproj (in 1.1 sec).
12 of 14 projects are up-to-date for restore.
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Graphics -> D:\a\1\s\artifacts\bin\Graphics\Debug\net11.0\Microsoft.Maui.Graphics.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Essentials -> D:\a\1\s\artifacts\bin\Essentials\Debug\net11.0\Microsoft.Maui.Essentials.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Core -> D:\a\1\s\artifacts\bin\Core\Debug\net11.0\Microsoft.Maui.dll
Controls.Core.Design -> D:\a\1\s\artifacts\bin\Controls.Core.Design\Debug\net472\Microsoft.Maui.Controls.DesignTools.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Controls.BindingSourceGen -> D:\a\1\s\artifacts\bin\Controls.BindingSourceGen\Debug\netstandard2.0\Microsoft.Maui.Controls.BindingSourceGen.dll
Maps -> D:\a\1\s\artifacts\bin\Maps\Debug\net11.0\Microsoft.Maui.Maps.dll
Core.HybridWebViewSourceGen -> D:\a\1\s\artifacts\bin\Core.HybridWebViewSourceGen\Debug\netstandard2.0\Microsoft.Maui.Core.HybridWebViewSourceGen.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Controls.Core -> D:\a\1\s\artifacts\bin\Controls.Core\Debug\net11.0\Microsoft.Maui.Controls.dll
Controls.Xaml.Design -> D:\a\1\s\artifacts\bin\Controls.Xaml.Design\Debug\net472\Microsoft.Maui.Controls.Xaml.DesignTools.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Controls.Maps -> D:\a\1\s\artifacts\bin\Controls.Maps\Debug\net11.0\Microsoft.Maui.Controls.Maps.dll
##vso[build.updatebuildnumber]11.0.0-ci+azdo.14446238
Controls.Xaml -> D:\a\1\s\artifacts\bin\Controls.Xaml\Debug\net11.0\Microsoft.Maui.Controls.Xaml.dll
TestUtils -> D:\a\1\s\artifacts\bin\TestUtils\Debug\netstandard2.0\Microsoft.Maui.TestUtils.dll
Controls.Core.UnitTests -> D:\a\1\s\artifacts\bin\Controls.Core.UnitTests\Debug\net11.0\Microsoft.Maui.Controls.Core.UnitTests.dll
Test run for D:\a\1\s\artifacts\bin\Controls.Core.UnitTests\Debug\net11.0\Microsoft.Maui.Controls.Core.UnitTests.dll (.NETCoreApp,Version=v11.0)
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 11.0.0-preview.5.26256.105)
[xUnit.net 00:00:00.24] Discovering: Microsoft.Maui.Controls.Core.UnitTests
[xUnit.net 00:00:01.74] Discovered: Microsoft.Maui.Controls.Core.UnitTests
[xUnit.net 00:00:01.76] Starting: Microsoft.Maui.Controls.Core.UnitTests
[xUnit.net 00:00:01.89] Finished: Microsoft.Maui.Controls.Core.UnitTests
Passed InvokerGetterThrowsBeforeTargetIsSet [13 ms]
Passed ExplicitInterfaceInvokeTargetPropertiesReturnNullBeforeTargetIsSet [< 1 ms]
Test Run Successful.
Total tests: 2
Passed: 2
Total time: 2.6260 Seconds
⚠️ Failure Details (10 tests)
- 🛠️ HybridWebViewTests_ExceptionHandling without fix: build failed before tests could run
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (ar...
- 🛠️ HybridWebViewTests_InvokeDotNet without fix: build failed before tests could run
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (ar...
- 🛠️ HybridWebViewTests_InvokeJavaScriptAsync without fix: build failed before tests could run
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (ar...
- 🛠️ HybridWebViewTests_SetInvokeJavaScriptTarget without fix: build failed before tests could run
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(4,30): error CS0234: The type or namespace name 'CSharp' does not exist in the namespace 'Microsoft.CodeAnalysis' (ar...
- 🛠️ HybridWebViewSourceGenTests without fix: build failed before tests could run
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(3,17): error CS0234: The type or namespace name 'CodeAnalysis' does not exist in the namespace 'Microsoft' (are you m...
- 🛠️ HybridWebViewTests without fix: build failed before tests could run
D:\a\1\s\src\Core\src\HybridWebViewSourceGen\HybridWebViewInvokeTargetGenerator.cs(3,17): error CS0234: The type or namespace name 'CodeAnalysis' does not exist in the namespace 'Microsoft' (are you m...
⚠️ HybridWebViewTests_ExceptionHandling with fix:Test filter 'HybridWebViewTests_ExceptionHandling' matched 0 Windows device test categories. Available categories: Dispatcher, Border, BoxView, Button, CarouselView, CheckBox, CollectionView, Compatibility, ContentView, MenuFlyout, DatePicker, Editor, Entry, FlyoutPage, Label, Frame, HybridWebView, Image, Layout, FlexLayout, ListView, Modal, NavigationPage, Page, Path, Picker, Behavior, RadioButton, RefreshView, ScrollView, SearchBar, Shape, Shell, TabbedPage, TemplatedView, Toolbar, View, VisualElement, VisualElementTree, WebView, Window, Mapper, Xaml, WindowOverlay, Memory, Lifecycle⚠️ HybridWebViewTests_InvokeDotNet with fix:Test filter 'HybridWebViewTests_InvokeDotNet' matched 0 Windows device test categories. Available categories: Dispatcher, Border, BoxView, Button, CarouselView, CheckBox, CollectionView, Compatibility, ContentView, MenuFlyout, DatePicker, Editor, Entry, FlyoutPage, Label, Frame, HybridWebView, Image, Layout, FlexLayout, ListView, Modal, NavigationPage, Page, Path, Picker, Behavior, RadioButton, RefreshView, ScrollView, SearchBar, Shape, Shell, TabbedPage, TemplatedView, Toolbar, View, VisualElement, VisualElementTree, WebView, Window, Mapper, Xaml, WindowOverlay, Memory, Lifecycle⚠️ HybridWebViewTests_InvokeJavaScriptAsync with fix:Test filter 'HybridWebViewTests_InvokeJavaScriptAsync' matched 0 Windows device test categories. Available categories: Dispatcher, Border, BoxView, Button, CarouselView, CheckBox, CollectionView, Compatibility, ContentView, MenuFlyout, DatePicker, Editor, Entry, FlyoutPage, Label, Frame, HybridWebView, Image, Layout, FlexLayout, ListView, Modal, NavigationPage, Page, Path, Picker, Behavior, RadioButton, RefreshView, ScrollView, SearchBar, Shape, Shell, TabbedPage, TemplatedView, Toolbar, View, VisualElement, VisualElementTree, WebView, Window, Mapper, Xaml, WindowOverlay, Memory, Lifecycle⚠️ HybridWebViewTests_SetInvokeJavaScriptTarget with fix:Test filter 'HybridWebViewTests_SetInvokeJavaScriptTarget' matched 0 Windows device test categories. Available categories: Dispatcher, Border, BoxView, Button, CarouselView, CheckBox, CollectionView, Compatibility, ContentView, MenuFlyout, DatePicker, Editor, Entry, FlyoutPage, Label, Frame, HybridWebView, Image, Layout, FlexLayout, ListView, Modal, NavigationPage, Page, Path, Picker, Behavior, RadioButton, RefreshView, ScrollView, SearchBar, Shape, Shell, TabbedPage, TemplatedView, Toolbar, View, VisualElement, VisualElementTree, WebView, Window, Mapper, Xaml, WindowOverlay, Memory, Lifecycle
📁 Fix files reverted (40 files)
Microsoft.Maui-dev.slnMicrosoft.Maui-mac.slnfMicrosoft.Maui-windows.slnfMicrosoft.Maui.BuildTasks.slnfMicrosoft.Maui.slneng/Microsoft.Maui.Packages-mac.slnfeng/Microsoft.Maui.Packages.slnfsrc/Controls/samples/Controls.Sample/Pages/Controls/HybridWebViewPage.xaml.cssrc/Controls/src/Build.Tasks/Controls.Build.Tasks.csprojsrc/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.targetssrc/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/maui-blazor.aotprofile.txtsrc/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/maui-sc.aotprofile.txtsrc/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/maui.aotprofile.txtsrc/Controls/src/Core/Controls.Core.csprojsrc/Controls/src/Core/Hosting/AppHostBuilderExtensions.cssrc/Controls/src/Core/HybridWebView/HybridWebView.cssrc/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txtsrc/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txtsrc/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txtsrc/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txtsrc/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txtsrc/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txtsrc/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txtsrc/Core/src/Core.csprojsrc/Core/src/Core/IHybridWebView.cssrc/Core/src/Handlers/HybridWebView/HybridWebViewHandler.Windows.cssrc/Core/src/Handlers/HybridWebView/HybridWebViewHandler.cssrc/Core/src/Handlers/HybridWebView/HybridWebViewHandler.iOS.cssrc/Core/src/Platform/Android/MauiHybridWebView.cssrc/Core/src/Platform/Android/MauiHybridWebViewClient.cssrc/Core/src/Platform/Windows/MauiHybridWebView.cssrc/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txtsrc/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txtsrc/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txtsrc/Core/src/PublicAPI/net-tizen/PublicAPI.Unshipped.txtsrc/Core/src/PublicAPI/net-windows/PublicAPI.Unshipped.txtsrc/Core/src/PublicAPI/net/PublicAPI.Unshipped.txtsrc/Core/src/PublicAPI/netstandard/PublicAPI.Unshipped.txtsrc/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txtsrc/Core/src/RuntimeFeature.cs
New files (not reverted):
src/Core/src/Core/HybridWebViewInvoker.cssrc/Core/src/Handlers/HybridWebView/ReflectionHybridWebViewInvoker.cssrc/Core/src/HybridWebViewSourceGen/Core.HybridWebViewSourceGen.csprojsrc/Core/src/HybridWebViewSourceGen/HybridWebViewInvokeTargetGenerator.cs
📱 UI Tests — ViewBaseTests,WebView
Detected UI test categories: ViewBaseTests,WebView
❌ Deep UI tests — 0 passed; 2 category setup failures (161 impacted tests marked failed by TRX) across 2 categories on platform-pool agent (replaces in-process counts above).
🧪 UI Test Execution Results (deep, platform pool)
| Category | Tests | Snapshot diffs |
|---|---|---|
ViewBaseTests |
0/115 (setup failed; 115 marked failed) | — |
WebView |
0/46 (setup failed; 46 marked failed) | — |
⚠️ ViewBaseTests — fixture setup failed for 115 tests
NUnit reported a OneTimeSetUp/fixture setup failure before test bodies ran; the TRX marked each affected test failed.
Multiple setup failure signatures were present; showing the first one. See the TRX artifact for all details.
OneTimeSetUp: OpenQA.Selenium.UnknownErrorException : An unknown server-side error occurred while processing the command. Original error: The system cannot find the file specified
at OpenQA.Selenium.WebDriver.UnpackAndThrowOnError(Response errorResponse, String commandToExecute)
at OpenQA.Selenium.WebDriver.ExecuteAsync(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.WebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Appium.AppiumDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.WebDriver.StartSession(ICapabilities capabilities)
at OpenQA.Selenium.WebDriver..ctor(ICommandExecutor executor, ICapabilities capabilities)
at OpenQA.Selenium.Appium.AppiumDriver..ctor(ICommandExecutor commandExecutor, ICapabilities appiumOptions)
at OpenQA.Selenium.Appium.AppiumDriver..ctor(Uri remoteAddress, ICapabilities appiumOptions, TimeSpan commandTimeout, AppiumClientConfig clientConfig)
at OpenQA.Selenium.Appium.AppiumDriver..ctor(Uri remoteAddress, ICapabilities appiumOptions, TimeSpan commandTimeout)
at OpenQA.Selenium.Appium.AppiumDriver..ctor(Uri remoteAddress, ICapabilities appiumOptions)
at OpenQA.Selenium.Appium.Windows.WindowsDriver..ctor(Uri remoteAddress, AppiumOptions AppiumOptions)
at UITest.Appium.AppiumWindowsApp..ctor(Uri remoteAddress, IConfig config) in /_/src/TestUtils/src/UITest.Appium/AppiumWindowsApp.cs:line 11
at UI
...
⚠️ WebView — fixture setup failed for 46 tests
NUnit reported a OneTimeSetUp/fixture setup failure before test bodies ran; the TRX marked each affected test failed.
Multiple setup failure signatures were present; showing the first one. See the TRX artifact for all details.
OneTimeSetUp: OpenQA.Selenium.UnknownErrorException : An unknown server-side error occurred while processing the command. Original error: The system cannot find the file specified
at OpenQA.Selenium.WebDriver.UnpackAndThrowOnError(Response errorResponse, String commandToExecute)
at OpenQA.Selenium.WebDriver.ExecuteAsync(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.WebDriver.StartSession(ICapabilities capabilities)
at OpenQA.Selenium.WebDriver..ctor(ICommandExecutor executor, ICapabilities capabilities)
at OpenQA.Selenium.Appium.AppiumDriver..ctor(ICommandExecutor commandExecutor, ICapabilities appiumOptions)
at OpenQA.Selenium.Appium.AppiumDriver..ctor(Uri remoteAddress, ICapabilities appiumOptions)
at UITest.Appium.AppiumWindowsApp..ctor(Uri remoteAddress, IConfig config) in /_/src/TestUtils/src/UITest.Appium/AppiumWindowsApp.cs:line 11
at UITest.Appium.AppiumServerContext.CreateUIClientContext(IConfig config) in /_/src/TestUtils/src/UITest.Appium/AppiumServerContext.cs:line 41
at UITest.Appium.NUnit.UITestContextBase.InitialSetup(IServerContext context, Boolean reset) in /_/src/TestUtils/src/UITest.NUnit/UITestContextBase.cs:line 77
at UITest.Appium.NUnit.UITestContextBase.InitialSetup(IServerContext context) in /_/src/TestUtils/src/UITest.NUnit/UITestContextBase.cs:line 55
at UITest.Appium.NUnit.UITestBase.OneTimeSetup() in /_/src/TestUtils/src/UITest.NUnit/UITestBase.cs:line 215
at System.RuntimeMet
...
📎 Download drop-deep-uitests artifact (TRX + snapshot diffs)
📋 Pre-Flight — Context & Validation
Issue: #34867 - AOT integration tests fail: unexpected IL3050 warnings for HybridWebViewHandler; also fixes #35745 and #35740
PR: #35626 - [AOT] Make HybridWebView AOT safe using source generator
Platforms Affected: android, ios, maccatalyst, windows
Files Changed: 46 implementation, 7 test
Key Findings
- PR replaces HybridWebView's reflection-only JS-to-.NET dispatch with a source-generator/interceptor path using
JsonSerializerContextmetadata to avoid NativeAOT/trim warnings. - Public API and analyzer packaging are part of the fix: a generated invoker hook is exposed, source generator assembly is packed through Controls.Build.Tasks, and public API files are updated.
- Gate was pre-run and inconclusive due to build/environment failure; this review did not recreate or overwrite
gate/content.md. ghwas unauthenticated in this environment, so PR metadata/comments were read through public API/web fetch where possible and CI checks were not queried withgh.- Targeted source-generator regression surface on Windows passed on the PR branch:
HybridWebViewSourceGenTests11/11.
Code Review Summary
Verdict: NEEDS_CHANGES
Confidence: low
Errors: 2 | Warnings: 0 | Suggestions: 0
Key code review findings:
- ❌
src/Controls/samples/Controls.Sample/Pages/Controls/HybridWebViewPage.xaml.cs:17selects the source-generated overload whileDotNetMethodsis a private nested type; the generator rejects private nested targets with MAUIHWVSG003. - ❌
src/Core/src/Core/IHybridWebView.cs:29adds required members to a shipped public interface, creating a source/binary compatibility risk for third-partyIHybridWebViewimplementers.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #35626 | Source generator/interceptors plus public IHybridWebView.Invoker hook and JsonSerializerContext overload |
53 files | Original PR; targeted source-generator tests pass, but code review found sample accessibility and public interface compatibility issues |
🔬 Code Review — Deep Analysis
Code Review — PR #35626
Independent Assessment
What this changes: Reworks HybridWebView JS-to-.NET invocation so the old reflection path is marked unsafe for trimming/AOT, adds a JsonSerializerContext overload intended to be intercepted by a new source generator, packages that analyzer through MAUI targets, and updates HybridWebView tests/sample usage.
Inferred motivation: Make HybridWebView invocation usable in trimmed/NativeAOT scenarios by generating typed dispatch and serializer metadata access instead of relying on reflection and dynamic System.Text.Json.
Reconciliation with PR Narrative
Author claims: Not available. Per the request, I used local repository context only, did not use gh, and did not read PR narrative/comments.
Agreement/disagreement: Not applicable; assessment is code-only.
Prior Review Reconciliation
Prior review surfaces were not queried because gh is unauthenticated and the request explicitly forbids gh/GitHub access. No prior ❌ Error findings could be reconciled from local context.
Blast Radius Assessment
- Runs for all instances: Partly. The analyzer is enabled by default for MAUI Controls consumers when analyzers are not disabled; the
IHybridWebViewinterface change affects all implementers. - Startup impact: Low direct startup impact, but build-time analyzer/interceptor failures can block apps/samples before runtime.
- Static/shared state: No new app-wide static mutable state observed; the change does add public interface/API surface and build-transitive analyzer plumbing.
CI Status
- Required-check result: undetermined
- Classification: undetermined —
gh pr checks --requiredwas not run becauseghis unauthenticated and the user explicitly prohibitedgh. - Action taken: Capped confidence to low and did not use
LGTM.
Findings
❌ Error — The new source-generated overload breaks the updated sample
src/Controls/samples/Controls.Sample/Pages/Controls/HybridWebViewPage.xaml.cs:17 now calls SetInvokeJavaScriptTarget<DotNetMethods>(..., SampleInvokeJsContext.Default), which selects the source-generated/intercepted overload. The generator explicitly rejects private target types (MAUIHWVSG003) and has a unit test for that behavior (ReportsDiagnosticForPrivateNestedInvokeTarget). In this file, DotNetMethods remains a private nested class at line 140, so the sample should fail compilation as soon as the HybridWebView source generator runs. Make the target accessible to generated code (for example internal) or keep this sample on the legacy overload.
❌ Error — Public interface additions are a breaking API change
src/Core/src/Core/IHybridWebView.cs:29 adds a required Invoker property to the already-shipped public IHybridWebView interface, and line 55 adds another required method. PublicAPI.Shipped.txt already contains IHybridWebView and its prior members, so third-party implementations compiled/source-built against the existing interface now have to implement these new members even if they do not use the AOT/source-generated path. Prefer putting the invoker hook on the concrete HybridWebView, an internal interface, a versioned/derived interface, or another non-breaking extension point instead of mutating the shipped interface.
Failure-Mode Probing
- What happens if a consumer/sample uses the new overload with a private nested target? The generator reports MAUIHWVSG003 and does not emit the interceptor, turning the updated call into a build failure (or runtime throw if interception is unavailable).
- What happens to custom
IHybridWebViewimplementers? They must addInvokerplus the new overload; otherwise source builds fail and precompiled implementers risk interface mismatch at runtime. - What happens if the analyzer is disabled or not imported? The new
JsonSerializerContextoverload body throwsInvalidOperationException, so calls to that overload are intentionally non-functional without interception.
Verdict: NEEDS_CHANGES
Confidence: low (code findings are concrete, but CI/prior reviews/PR narrative were unavailable by instruction and required-check status is undetermined).
Summary: The AOT/source-generator direction is reasonable, but the current diff appears to introduce a sample build break and a shipped-interface breaking change. These should be addressed before merge.
🛠️ Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| 1 | try-fix | Static ConditionalWeakTable<object, HybridWebViewInvoker> registry; generated interceptors register invokers without adding required members to shipped IHybridWebView; concrete HybridWebView owns the AOT-safe overload |
✅ PASS (HybridWebViewSourceGenTests 11/11) |
6 source/test areas plus PublicAPI entries | Materially different from PR's interface-property hook; avoids public-interface breaking change and avoids sample MAUIHWVSG003 by keeping private sample target off the source-generated overload |
| PR | PR #35626 | Source generator/interceptors with public IHybridWebView.Invoker and public interface overload |
53 files | Original PR; targeted source-generator tests passed, but code review found two error-level issues |
Cross-Pollination
| Model | Round | New Ideas? | Details |
|---|---|---|---|
| claude-opus-4.6 | 1 | Yes | Proposed static weak registry side-channel instead of mutating shipped IHybridWebView |
| claude-opus-4.7 | 2 | Not queried | Stopped because Candidate #1 passed targeted regression tests and is demonstrably better on the reviewed compatibility issue |
| gpt-5.3-codex | 2 | Not queried | Stopped because Candidate #1 passed targeted regression tests and is demonstrably better on the reviewed compatibility issue |
| gpt-5.5 | 2 | Not queried | Stopped because Candidate #1 passed targeted regression tests and is demonstrably better on the reviewed compatibility issue |
Exhausted: No
Selected Fix: Candidate #1 — It preserves the AOT-safe generated invoker path while removing the PR's largest compatibility risk: required additions to a shipped public interface. It also avoids the sample's private nested target diagnostic by not converting that sample call to the source-generated overload.
📝 Recommended PR Title & Description
Assessment: ✏️ Recommend updating — the winning fix keeps the source-generator/AOT-safe direction but removes the PR description's public IHybridWebView.Invoker/interface-overload model and uses a registry-based generated invoker hook instead.
Recommended title
[AOT] HybridWebView: Use source-generated invokers for JS-to-.NET dispatch
Recommended description
### Root Cause
HybridWebView's JavaScript-to-.NET invocation path used runtime reflection and dynamic JSON serialization to find target methods, deserialize parameters, invoke .NET methods, and serialize return values. That legacy model is not NativeAOT-safe and required the `RuntimeFeature.IsHybridWebViewSupported` feature switch so trimmed/AOT apps could disable HybridWebView support instead of hitting trim/AOT warnings.
### Description of Change
This PR adds an AOT-safe JS-to-.NET dispatch path for HybridWebView using a Roslyn source generator plus C# interceptors.
The new API is:
```csharp
hybridWebView.SetInvokeJavaScriptTarget(new DotNetMethods(), MyJsonContext.Default);
The source generator intercepts that direct call at compile time and generates a HybridWebViewInvoker implementation with fully typed delegates. Generated invokers use the supplied JsonSerializerContext / JsonTypeInfo<T> metadata for parameters and return values, so the AOT-safe path avoids runtime method discovery, MakeGenericMethod, Activator.CreateInstance, and dynamic JSON type resolution.
The overload body intentionally throws if it is reached. That is by design: the JsonSerializerContext overload must be intercepted. Non-interception means the analyzer was not referenced, analyzers were disabled, or the call shape was unsupported; that is a non-recoverable build/configuration bug, not a runtime fallback scenario.
There are no intentional JavaScript protocol/runtime changes in this PR. An earlier generated HybridWebView.js compiler-output-only diff was reverted.
Key Technical Details
- Added
src/Core/src/HybridWebViewSourceGen/HybridWebViewInvokeTargetGenerator.csto generate typed invokers for directHybridWebView.SetInvokeJavaScriptTarget<T>(T, JsonSerializerContext)calls, including inherited public methods and interface-typed invoke targets. The generator reports diagnostics for unsupported overloads, open generic targets, and invoke target types that are not accessible to generated code. - Changed
HybridWebViewInvokerinto an abstract base class that stores JavaScript invocation target/type metadata and defines the invoker contract. - Added the AOT-safe
JsonSerializerContextoverload on concreteMicrosoft.Maui.Controls.HybridWebViewonly, avoiding new required members on the shippedIHybridWebViewpublic interface. - Generated invokers are registered through an internal weak registry keyed by the HybridWebView instance.
HybridWebViewHandlerchecks that registry for the AOT-safe invoker before falling back to the legacy reflection invoker. - Generated invokers and
ReflectionHybridWebViewInvokerboth derive fromHybridWebViewInvoker. - Packaged
Microsoft.Maui.Core.HybridWebViewSourceGen.dllintoMicrosoft.Maui.Controls.Build.Tasksand included it fromMicrosoft.Maui.Controls.targets, so consuming apps get the interceptor analyzer automatically. - Kept the shipped legacy
HybridWebView.SetInvokeJavaScriptTarget<T>(T target)public API for compatibility. It registersReflectionHybridWebViewInvoker, preserves target metadata withDynamicallyAccessedMembers, and is marked with[RequiresUnreferencedCode]/[RequiresDynamicCode]to direct trim/AOT apps to the newJsonSerializerContextoverload. - Marked
ReflectionHybridWebViewInvokerwith[RequiresUnreferencedCode]/[RequiresDynamicCode]so the legacy reflection path is visibly not the NativeAOT-safe implementation. - Kept samples that use private invoke target types on the legacy overload unless the target is made accessible to generated code.
Issues Fixed
Fixes #34867.
Fixes #35745.
Fixes #35740.
</details>
---
<details>
<summary><strong>🏁 Report — Final Recommendation</strong></summary>
<br/>
# Comparative Report — PR #35626
## Candidates Compared
| Rank | Candidate | Regression/Test Result | Assessment |
|---:|---|---|---|
| 1 | `try-fix-1` | ✅ PASS — `HybridWebViewSourceGenTests` 11/11 | Best candidate. Preserves the AOT-safe source-generator path while avoiding the shipped-interface compatibility break and the sample MAUIHWVSG003 compile failure. |
| 2 | `pr-plus-reviewer` | ✅ Equivalent to `try-fix-1` sandbox application | Applies the expert-review feedback by converging on the registry/no-interface-change design. Ranked just below `try-fix-1` because the try-fix candidate has the explicit recorded regression-test evidence and diff artifact. |
| 3 | `pr` | ⚠️ Gate inconclusive; targeted source-generator tests previously passed; expert review found 2 errors | Directionally correct but not acceptable as submitted because it adds required members to a shipped public interface and updates the sample to an unsupported source-generator call shape. |
## Key Findings
The raw PR implements the right high-level model for AOT safety: source-generated HybridWebView invokers, `JsonSerializerContext` metadata, annotated reflection fallback, and analyzer packaging. The implementation still exposes generated-invoker plumbing through `IHybridWebView`, which is a public compatibility hazard, and it converts a Controls.Sample call to the generated overload even though the target type is private and therefore rejected by the generator.
`try-fix-1` uses a static `ConditionalWeakTable<object, HybridWebViewInvoker>` registry instead of new required interface members. Generated interceptors register the invoker in the registry, the handler consults the registry first, and legacy reflection remains the fallback. This preserves the intended NativeAOT-safe behavior without expanding the shipped `IHybridWebView` contract.
## Winner
**Winner:** `try-fix-1`
`try-fix-1` wins because it is the only candidate with explicit passing targeted regression evidence and it directly fixes both expert-review errors. The gate was inconclusive due to environment/build issues and is not treated as a failure for any candidate, but the raw PR's code-review errors rank it below candidates that address them.
</details>
</details>
<!-- SESSION:3cd60c2 END -->
---
<details>
<summary><strong>🧭 Next Steps</strong> — alternative fix proposed (<code>try-fix-1</code>)</summary>
<br/>
**Automated review — alternative fix proposed**
The expert-reviewer evaluation compared the PR fix against automatically generated candidates and selected <code>try-fix-1</code> as the strongest fix.
**Why:** try-fix-1 preserves the PR source-generator/AOT-safe design while fixing both expert-review blockers: it avoids adding required members to shipped IHybridWebView and avoids the sample private-target source-generator diagnostic. It also has explicit passing targeted regression evidence.
Please consider applying the candidate diff below (or use it as guidance). Once you push an update, this workflow will re-trigger and re-evaluate.
<details><summary>Candidate diff (<code>try-fix-1</code>)</summary>
````diff
diff --git a/src/Controls/src/Core/HybridWebView/HybridWebView.cs b/src/Controls/src/Core/HybridWebView/HybridWebView.cs
index 26bd068576..6488059d41 100644
--- a/src/Controls/src/Core/HybridWebView/HybridWebView.cs
+++ b/src/Controls/src/Core/HybridWebView/HybridWebView.cs
@@ -1,6 +1,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
+using System.Text.Json.Serialization;
using System.Text.Json.Serialization.Metadata;
using System.Threading.Tasks;
@@ -56,6 +57,33 @@ namespace Microsoft.Maui.Controls
((IHybridWebView)this).InvokeJavaScriptType = typeof(T);
}
+ /// <summary>
+ /// Sets the object that will be the target of JavaScript calls from the web view using
+ /// AOT-safe source-generated serialization. The source generator intercepts this call at
+ /// compile time and registers a generated invoker via <see cref="HybridWebViewInvokerRegistry"/>.
+ /// </summary>
+ /// <typeparam name="T">The type that contains methods callable from JavaScript.</typeparam>
+ /// <param name="target">An instance of type <typeparamref name="T"/> that will be used to call methods on.</param>
+ /// <param name="jsonSerializerContext">The source-generated JSON serializer context for parameter and return types used by the target methods.</param>
+ public void SetInvokeJavaScriptTarget<T>(T target, JsonSerializerContext jsonSerializerContext) where T : class
+ {
+ if (target is null)
+ {
+ throw new ArgumentNullException(nameof(target));
+ }
+
+ if (jsonSerializerContext is null)
+ {
+ throw new ArgumentNullException(nameof(jsonSerializerContext));
+ }
+
+ // The source generator interceptor must replace this method call at compile time.
+ // Reaching this body means interception failed.
+ throw new InvalidOperationException(
+ "SetInvokeJavaScriptTarget<T>(T, JsonSerializerContext) must be intercepted by the source generator. " +
+ "Ensure the Microsoft.Maui.Core.HybridWebViewSourceGen analyzer is referenced.");
+ }
+
void IHybridWebView.RawMessageReceived(string rawMessage)
{
RawMessageReceived?.Invoke(this, new HybridWebViewRawMessageReceivedEventArgs(rawMessage));
diff --git a/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt
index 3d583efe17..a667fe02e2 100644
--- a/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt
@@ -117,3 +117,4 @@ virtual Microsoft.Maui.Controls.LongPressingEventArgs.GetPosition(Microsoft.Maui
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextProperty -> Microsoft.Maui.Controls.BindableProperty
~virtual Microsoft.Maui.Controls.Platform.Compatibility.ShellItemRenderer.UpdateShellSectionBadge(Microsoft.Maui.Controls.ShellSection shellSection, int index) -> void
+Microsoft.Maui.Controls.HybridWebView.SetInvokeJavaScriptTarget<T>(T! target, System.Text.Json.Serialization.JsonSerializerContext! jsonSerializerContext) -> void
diff --git a/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
index 58d0483085..3aff90510f 100644
--- a/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
@@ -109,3 +109,4 @@ virtual Microsoft.Maui.Controls.LongPressingEventArgs.GetPosition(Microsoft.Maui
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextProperty -> Microsoft.Maui.Controls.BindableProperty
+Microsoft.Maui.Controls.HybridWebView.SetInvokeJavaScriptTarget<T>(T! target, System.Text.Json.Serialization.JsonSerializerContext! jsonSerializerContext) -> void
diff --git a/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
index 58d0483085..3aff90510f 100644
--- a/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
@@ -109,3 +109,4 @@ virtual Microsoft.Maui.Controls.LongPressingEventArgs.GetPosition(Microsoft.Maui
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextProperty -> Microsoft.Maui.Controls.BindableProperty
+Microsoft.Maui.Controls.HybridWebView.SetInvokeJavaScriptTarget<T>(T! target, System.Text.Json.Serialization.JsonSerializerContext! jsonSerializerContext) -> void
diff --git a/src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
index 65f8923705..a9c0e20665 100644
--- a/src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
@@ -105,3 +105,4 @@ virtual Microsoft.Maui.Controls.LongPressingEventArgs.GetPosition(Microsoft.Maui
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextProperty -> Microsoft.Maui.Controls.BindableProperty
+Microsoft.Maui.Controls.HybridWebView.SetInvokeJavaScriptTarget<T>(T! target, System.Text.Json.Serialization.JsonSerializerContext! jsonSerializerContext) -> void
diff --git a/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt
index dd6618904c..1df32759d4 100644
--- a/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt
@@ -102,3 +102,4 @@ virtual Microsoft.Maui.Controls.LongPressingEventArgs.GetPosition(Microsoft.Maui
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextProperty -> Microsoft.Maui.Controls.BindableProperty
+Microsoft.Maui.Controls.HybridWebView.SetInvokeJavaScriptTarget<T>(T! target, System.Text.Json.Serialization.JsonSerializerContext! jsonSerializerContext) -> void
diff --git a/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt
index 32221f10a4..9b46bdf737 100644
--- a/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt
@@ -99,3 +99,4 @@ virtual Microsoft.Maui.Controls.LongPressingEventArgs.GetPosition(Microsoft.Maui
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextProperty -> Microsoft.Maui.Controls.BindableProperty
+Microsoft.Maui.Controls.HybridWebView.SetInvokeJavaScriptTarget<T>(T! target, System.Text.Json.Serialization.JsonSerializerContext! jsonSerializerContext) -> void
diff --git a/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt
index acc2cabf3f..2be638d112 100644
--- a/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt
@@ -90,3 +90,4 @@ virtual Microsoft.Maui.Controls.LongPressingEventArgs.GetPosition(Microsoft.Maui
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextColorProperty -> Microsoft.Maui.Controls.BindableProperty
~static readonly Microsoft.Maui.Controls.ToolbarItem.BadgeTextProperty -> Microsoft.Maui.Controls.BindableProperty
+Microsoft.Maui.Controls.HybridWebView.SetInvokeJavaScriptTarget<T>(T! target, System.Text.Json.Serialization.JsonSerializerContext! jsonSerializerContext) -> void
diff --git a/src/Controls/tests/SourceGen.UnitTests/HybridWebViewSourceGenTests.cs b/src/Controls/tests/SourceGen.UnitTests/HybridWebViewSourceGenTests.cs
index 105241055a..7a1314492b 100644
--- a/src/Controls/tests/SourceGen.UnitTests/HybridWebViewSourceGenTests.cs
+++ b/src/Controls/tests/SourceGen.UnitTests/HybridWebViewSourceGenTests.cs
@@ -53,6 +53,7 @@ internal sealed class InvokeTargetJsonContext : JsonSerializerContext
Assert.Equal("HybridWebViewInterceptors.g.cs", generated.HintName);
Assert.Contains("file static class HybridWebViewInterceptors", generated.SourceText.ToString(), StringComparison.Ordinal);
Assert.Contains("SetInvokeJavaScriptTarget_0", generated.SourceText.ToString(), StringComparison.Ordinal);
+ Assert.Contains("HybridWebViewInvokerRegistry.Register(hybridWebView", generated.SourceText.ToString(), StringComparison.Ordinal);
}
[Fact]
@@ -237,8 +238,11 @@ internal sealed class InvokeTargetJsonContext : JsonSerializerContext
}
[Fact]
- public void InterfaceReceiverAssignsInvokerThroughInterface()
+ public void InterfaceReceiverDoesNotGenerateInterceptorWithoutMethod()
{
+ // With the registry approach, SetInvokeJavaScriptTarget(T, JsonSerializerContext) is only
+ // on the concrete HybridWebView class, not IHybridWebView. Calls on IHybridWebView receivers
+ // should not produce an interceptor (no 2-arg overload exists on the interface).
const string source = """
using System;
using System.Text.Json;
@@ -252,7 +256,8 @@ public static class Registration
{
public static void Register(IHybridWebView hybridWebView)
{
- hybridWebView.SetInvokeJavaScriptTarget(new InvokeTarget(), InvokeTargetJsonContext.Default);
+ // This won't compile because IHybridWebView doesn't have the 2-arg overload.
+ // The test verifies the generator handles no candidates gracefully.
}
}
@@ -271,13 +276,8 @@ internal sealed class InvokeTargetJsonContext : JsonSerializerContext
""";
var (result, updatedCompilation, generatorDiagnostics) = RunGenerator(source);
- AssertNoCompilationErrors(updatedCompilation, generatorDiagnostics);
-
- var generated = Assert.Single(result.Results.Single().GeneratedSources).SourceText.ToString();
- Assert.Contains("this global::Microsoft.Maui.IHybridWebView hybridWebView", generated, StringComparison.Ordinal);
- Assert.Contains("hybridWebView.Invoker = new Invoker_0(typedTarget, jsonSerializerContext);", generated, StringComparison.Ordinal);
- Assert.DoesNotContain("concreteHybridWebView", generated, StringComparison.Ordinal);
- Assert.DoesNotContain("can only be registered on Microsoft.Maui.Controls.HybridWebView", generated, StringComparison.Ordinal);
+ // No generated sources expected — IHybridWebView doesn't have the 2-arg overload
+ Assert.Empty(result.Results.Single().GeneratedSources);
}
[Fact]
diff --git a/src/Core/src/Core.csproj b/src/Core/src/Core.csproj
index 41e5ba010d..1231325332 100644
--- a/src/Core/src/Core.csproj
+++ b/src/Core/src/Core.csproj
@@ -99,6 +99,7 @@
</ItemGroup>
<ItemGroup>
<Compile Remove="Platform\iOS\CALayerAutosizeObserver.cs" />
+ <Compile Remove="HybridWebViewSourceGen\**" />
</ItemGroup>
<Target Name="_CopyToBuildTasksDir" AfterTargets="Build">
diff --git a/src/Core/src/Handlers/HybridWebView/HybridWebViewHandler.cs b/src/Core/src/Handlers/HybridWebView/HybridWebViewHandler.cs
index 652164ccf4..1644e92669 100644
--- a/src/Core/src/Handlers/HybridWebView/HybridWebViewHandler.cs
+++ b/src/Core/src/Handlers/HybridWebView/HybridWebViewHandler.cs
@@ -188,42 +188,54 @@ namespace Microsoft.Maui.Handlers
{
try
{
- var invokeTarget = VirtualView.InvokeJavaScriptTarget ?? throw new InvalidOperationException($"The {nameof(IHybridWebView)}.{nameof(IHybridWebView.InvokeJavaScriptTarget)} property must have a value in order to invoke a .NET method from JavaScript.");
- var invokeTargetType = VirtualView.InvokeJavaScriptType ?? throw new InvalidOperationException($"The {nameof(IHybridWebView)}.{nameof(IHybridWebView.InvokeJavaScriptType)} property must have a value in order to invoke a .NET method from JavaScript.");
+ JSInvokeMethodData? invokeData = null;
+ if (streamBody is not null)
+ {
+ invokeData = await JsonSerializer.DeserializeAsync<JSInvokeMethodData>(streamBody, HybridWebViewHandlerJsonContext.Default.JSInvokeMethodData);
+ }
+ else if (stringBody is not null && !string.IsNullOrWhiteSpace(stringBody))
+ {
+ invokeData = JsonSerializer.Deserialize<JSInvokeMethodData>(stringBody, HybridWebViewHandlerJsonContext.Default.JSInvokeMethodData);
+ }
- JSInvokeMethodData? invokeData = null;
- if (streamBody is not null)
- {
- invokeData = await JsonSerializer.DeserializeAsync<JSInvokeMethodData>(streamBody, HybridWebViewHandlerJsonContext.Default.JSInvokeMethodData);
- }
- else if (stringBody is not null && !string.IsNullOrWhiteSpace(stringBody))
- {
- invokeData = JsonSerializer.Deserialize<JSInvokeMethodData>(stringBody, HybridWebViewHandlerJsonContext.Default.JSInvokeMethodData);
- }
+ if (invokeData?.MethodName is null)
+ {
+ throw new InvalidOperationException("The invoke data did not provide a method name.");
+ }
- if (invokeData?.MethodName is null)
- {
- throw new InvalidOperationException("The invoke data did not provide a method name.");
- }
+ // AOT-safe path: check the invoker registry first
+ if (HybridWebViewInvokerRegistry.TryGetInvoker(VirtualView, out var invoker) && invoker is not null)
+ {
+ var jsonResult = await invoker.InvokeMethodAsync(invokeData.MethodName, invokeData.ParamValues);
+ var invokeResult = jsonResult is not null
+ ? new DotNetInvokeResult { Result = jsonResult, IsJson = true }
+ : new DotNetInvokeResult();
+ var json = JsonSerializer.Serialize(invokeResult);
+ return Encoding.UTF8.GetBytes(json);
+ }
- var invokeResultRaw = await InvokeDotNetMethodAsync(invokeTargetType, invokeTarget, invokeData);
- var invokeResult = CreateInvokeResult(invokeResultRaw);
- var json = JsonSerializer.Serialize(invokeResult);
- var contentBytes = Encoding.UTF8.GetBytes(json);
+ // Reflection fallback path
+ var invokeTarget = VirtualView.InvokeJavaScriptTarget ?? throw new InvalidOperationException($"The {nameof(IHybridWebView)}.{nameof(IHybridWebView.InvokeJavaScriptTarget)} property must have a value in order to invoke a .NET method from JavaScript.");
+ var invokeTargetType = VirtualView.InvokeJavaScriptType ?? throw new InvalidOperationException($"The {nameof(IHybridWebView)}.{nameof(IHybridWebView.InvokeJavaScriptType)} property must have a value in order to invoke a .NET method from JavaScript.");
- return contentBytes;
- }
- catch (Exception ex)
- {
- MauiContext?.CreateLogger<HybridWebViewHandler>()?.LogError(ex, "An error occurred while invoking a .NET method from JavaScript: {ErrorMessage}", ex.Message);
+ var invokeResultRaw = await InvokeDotNetMethodAsync(invokeTargetType, invokeTarget, invokeData);
+ var invokeResultFallback = CreateInvokeResult(invokeResultRaw);
+ var jsonFallback = JsonSerializer.Serialize(invokeResultFallback);
+ var contentBytes = Encoding.UTF8.GetBytes(jsonFallback);
- // Return error response instead of null so JavaScript can handle the error
- var errorResult = CreateErrorResult(ex);
- var errorJson = JsonSerializer.Serialize(errorResult, HybridWebViewHandlerJsonContext.Default.DotNetInvokeResult);
- var errorBytes = Encoding.UTF8.GetBytes(errorJson);
- return errorBytes;
+ return contentBytes;
+ }
+ catch (Exception ex)
+ {
+ MauiContext?.CreateLogger<HybridWebViewHandler>()?.LogError(ex, "An error occurred while invoking a .NET method from JavaScript: {ErrorMessage}", ex.Message);
+
+ // Return error response instead of null so JavaScript can handle the error
+ var errorResult = CreateErrorResult(ex);
+ var errorJson = JsonSerializer.Serialize(errorResult, HybridWebViewHandlerJsonContext.Default.DotNetInvokeResult);
+ var errorBytes = Encoding.UTF8.GetBytes(errorJson);
+ return errorBytes;
+ }
}
- }
private static DotNetInvokeResult CreateInvokeResult(object? result)
{
diff --git a/src/Core/src/HybridWebViewSourceGen/HybridWebViewInvokeTargetGenerator.cs b/src/Core/src/HybridWebViewSourceGen/HybridWebViewInvokeTargetGenerator.cs
index 6159393085..a591b0919c 100644
--- a/src/Core/src/HybridWebViewSourceGen/HybridWebViewInvokeTargetGenerator.cs
+++ b/src/Core/src/HybridWebViewSourceGen/HybridWebViewInvokeTargetGenerator.cs
@@ -415,7 +415,7 @@ public sealed class HybridWebViewInvokeTargetGenerator : IIncrementalGenerator
sb.AppendLine($" if (target is not {info.TargetTypeName} typedTarget)");
sb.AppendLine($" throw new InvalidOperationException($\"Type mismatch: expected {info.TargetTypeName.Split('.').Last()} but got {{target.GetType().FullName}}\");");
sb.AppendLine();
- sb.AppendLine($" hybridWebView.Invoker = new Invoker_{index}(typedTarget, jsonSerializerContext);");
+ sb.AppendLine($" global::Microsoft.Maui.HybridWebViewInvokerRegistry.Register(hybridWebView, new Invoker_{index}(typedTarget, jsonSerializerContext));");
sb.AppendLine(" }");
sb.AppendLine();
diff --git a/src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt
index 5ac4dcac9f..b68d057332 100644
--- a/src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt
@@ -277,3 +277,9 @@ static Microsoft.Maui.Platform.TimePickerExtensions.UpdateTime(this Microsoft.Ma
static Microsoft.Maui.SafeAreaEdges.Container.get -> Microsoft.Maui.SafeAreaEdges
virtual Microsoft.Maui.Handlers.DatePickerHandler2.CreateDatePickerDialog(int year, int month, int day) -> Google.Android.Material.DatePicker.MaterialDatePicker?
virtual Microsoft.Maui.Handlers.TimePickerHandler2.CreateTimePickerDialog(int hour, int minute) -> Google.Android.Material.TimePicker.MaterialTimePicker?
+Microsoft.Maui.HybridWebViewInvoker
+Microsoft.Maui.HybridWebViewInvoker.HybridWebViewInvoker(object? invokeJavaScriptTarget, System.Type? invokeJavaScriptType) -> void
+abstract Microsoft.Maui.HybridWebViewInvoker.InvokeMethodAsync(string! methodName, string![]? paramJsonValues) -> System.Threading.Tasks.Task<string?>!
+Microsoft.Maui.HybridWebViewInvokerRegistry
+static Microsoft.Maui.HybridWebViewInvokerRegistry.Register(object! view, Microsoft.Maui.HybridWebViewInvoker! invoker) -> void
+static Microsoft.Maui.HybridWebViewInvokerRegistry.TryGetInvoker(object! view, out Microsoft.Maui.HybridWebViewInvoker? invoker) -> bool
diff --git a/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt
index d48be1c71b..512e89b39f 100644
--- a/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt
@@ -11,3 +11,9 @@ static Microsoft.Maui.Handlers.EditorHandler.MapBackground(Microsoft.Maui.Handle
static Microsoft.Maui.Handlers.EntryHandler.MapBackground(Microsoft.Maui.Handlers.IEntryHandler! handler, Microsoft.Maui.IEntry! entry) -> void
static Microsoft.Maui.Handlers.RadioButtonHandler.MapBackground(Microsoft.Maui.Handlers.IRadioButtonHandler! handler, Microsoft.Maui.IRadioButton! radioButton) -> void
static Microsoft.Maui.SafeAreaEdges.Container.get -> Microsoft.Maui.SafeAreaEdges
+Microsoft.Maui.HybridWebViewInvoker
+Microsoft.Maui.HybridWebViewInvoker.HybridWebViewInvoker(object? invokeJavaScriptTarget, System.Type? invokeJavaScriptType) -> void
+abstract Microsoft.Maui.HybridWebViewInvoker.InvokeMethodAsync(string! methodName, string![]? paramJsonValues) -> System.Threading.Tasks.Task<string?>!
+Microsoft.Maui.HybridWebViewInvokerRegistry
+static Microsoft.Maui.HybridWebViewInvokerRegistry.Register(object! view, Microsoft.Maui.HybridWebViewInvoker! invoker) -> void
+static Microsoft.Maui.HybridWebViewInvokerRegistry.TryGetInvoker(object! view, out Microsoft.Maui.HybridWebViewInvoker? invoker) -> bool
diff --git a/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
index d48be1c71b..512e89b39f 100644
--- a/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
@@ -11,3 +11,9 @@ static Microsoft.Maui.Handlers.EditorHandler.MapBackground(Microsoft.Maui.Handle
static Microsoft.Maui.Handlers.EntryHandler.MapBackground(Microsoft.Maui.Handlers.IEntryHandler! handler, Microsoft.Maui.IEntry! entry) -> void
static Microsoft.Maui.Handlers.RadioButtonHandler.MapBackground(Microsoft.Maui.Handlers.IRadioButtonHandler! handler, Microsoft.Maui.IRadioButton! radioButton) -> void
static Microsoft.Maui.SafeAreaEdges.Container.get -> Microsoft.Maui.SafeAreaEdges
+Microsoft.Maui.HybridWebViewInvoker
+Microsoft.Maui.HybridWebViewInvoker.HybridWebViewInvoker(object? invokeJavaScriptTarget, System.Type? invokeJavaScriptType) -> void
+abstract Microsoft.Maui.HybridWebViewInvoker.InvokeMethodAsync(string! methodName, string![]? paramJsonValues) -> System.Threading.Tasks.Task<string?>!
+Microsoft.Maui.HybridWebViewInvokerRegistry
+static Microsoft.Maui.HybridWebViewInvokerRegistry.Register(object! view, Microsoft.Maui.HybridWebViewInvoker! invoker) -> void
+static Microsoft.Maui.HybridWebViewInvokerRegistry.TryGetInvoker(object! view, out Microsoft.Maui.HybridWebViewInvoker? invoker) -> bool
diff --git a/src/Core/src/PublicAPI/net-tizen/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
index 66a516d720..062842d201 100644
--- a/src/Core/src/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
@@ -1,2 +1,8 @@
#nullable enable
static Microsoft.Maui.GridLength.implicit operator Microsoft.Maui.GridLength(string! value) -> Microsoft.Maui.GridLength
+Microsoft.Maui.HybridWebViewInvoker
+Microsoft.Maui.HybridWebViewInvoker.HybridWebViewInvoker(object? invokeJavaScriptTarget, System.Type? invokeJavaScriptType) -> void
+abstract Microsoft.Maui.HybridWebViewInvoker.InvokeMethodAsync(string! methodName, string![]? paramJsonValues) -> System.Threading.Tasks.Task<string?>!
+Microsoft.Maui.HybridWebViewInvokerRegistry
+static Microsoft.Maui.HybridWebViewInvokerRegistry.Register(object! view, Microsoft.Maui.HybridWebViewInvoker! invoker) -> void
+static Microsoft.Maui.HybridWebViewInvokerRegistry.TryGetInvoker(object! view, out Microsoft.Maui.HybridWebViewInvoker? invoker) -> bool
diff --git a/src/Core/src/PublicAPI/net-windows/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-windows/PublicAPI.Unshipped.txt
index 6e95a1b683..a9c1c1f3ba 100644
--- a/src/Core/src/PublicAPI/net-windows/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net-windows/PublicAPI.Unshipped.txt
@@ -3,3 +3,9 @@ override Microsoft.Maui.Platform.ContentPanel.OnCreateAutomationPeer() -> Micros
override Microsoft.Maui.Platform.MauiPasswordTextBox.OnCreateAutomationPeer() -> Microsoft.UI.Xaml.Automation.Peers.AutomationPeer!
static Microsoft.Maui.GridLength.implicit operator Microsoft.Maui.GridLength(string! value) -> Microsoft.Maui.GridLength
static Microsoft.Maui.SafeAreaEdges.Container.get -> Microsoft.Maui.SafeAreaEdges
+Microsoft.Maui.HybridWebViewInvoker
+Microsoft.Maui.HybridWebViewInvoker.HybridWebViewInvoker(object? invokeJavaScriptTarget, System.Type? invokeJavaScriptType) -> void
+abstract Microsoft.Maui.HybridWebViewInvoker.InvokeMethodAsync(string! methodName, string![]? paramJsonValues) -> System.Threading.Tasks.Task<string?>!
+Microsoft.Maui.HybridWebViewInvokerRegistry
+static Microsoft.Maui.HybridWebViewInvokerRegistry.Register(object! view, Microsoft.Maui.HybridWebViewInvoker! invoker) -> void
+static Microsoft.Maui.HybridWebViewInvokerRegistry.TryGetInvoker(object! view, out Microsoft.Maui.HybridWebViewInvoker? invoker) -> bool
diff --git a/src/Core/src/PublicAPI/net/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net/PublicAPI.Unshipped.txt
index b5d23f77de..2cebc55b8e 100644
--- a/src/Core/src/PublicAPI/net/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/net/PublicAPI.Unshipped.txt
@@ -1,3 +1,9 @@
#nullable enable
static Microsoft.Maui.GridLength.implicit operator Microsoft.Maui.GridLength(string! value) -> Microsoft.Maui.GridLength
static Microsoft.Maui.SafeAreaEdges.Container.get -> Microsoft.Maui.SafeAreaEdges
+Microsoft.Maui.HybridWebViewInvoker
+Microsoft.Maui.HybridWebViewInvoker.HybridWebViewInvoker(object? invokeJavaScriptTarget, System.Type? invokeJavaScriptType) -> void
+abstract Microsoft.Maui.HybridWebViewInvoker.InvokeMethodAsync(string! methodName, string![]? paramJsonValues) -> System.Threading.Tasks.Task<string?>!
+Microsoft.Maui.HybridWebViewInvokerRegistry
+static Microsoft.Maui.HybridWebViewInvokerRegistry.Register(object! view, Microsoft.Maui.HybridWebViewInvoker! invoker) -> void
+static Microsoft.Maui.HybridWebViewInvokerRegistry.TryGetInvoker(object! view, out Microsoft.Maui.HybridWebViewInvoker? invoker) -> bool
diff --git a/src/Core/src/PublicAPI/netstandard/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/netstandard/PublicAPI.Unshipped.txt
index 6e861c095c..f40130a16d 100644
--- a/src/Core/src/PublicAPI/netstandard/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/netstandard/PublicAPI.Unshipped.txt
@@ -1,2 +1,8 @@
#nullable enable
static Microsoft.Maui.SafeAreaEdges.Container.get -> Microsoft.Maui.SafeAreaEdges
+Microsoft.Maui.HybridWebViewInvoker
+Microsoft.Maui.HybridWebViewInvoker.HybridWebViewInvoker(object? invokeJavaScriptTarget, System.Type? invokeJavaScriptType) -> void
+abstract Microsoft.Maui.HybridWebViewInvoker.InvokeMethodAsync(string! methodName, string![]? paramJsonValues) -> System.Threading.Tasks.Task<string?>!
+Microsoft.Maui.HybridWebViewInvokerRegistry
+static Microsoft.Maui.HybridWebViewInvokerRegistry.Register(object! view, Microsoft.Maui.HybridWebViewInvoker! invoker) -> void
+static Microsoft.Maui.HybridWebViewInvokerRegistry.TryGetInvoker(object! view, out Microsoft.Maui.HybridWebViewInvoker? invoker) -> bool
diff --git a/src/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt
index 6e861c095c..f40130a16d 100644
--- a/src/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt
+++ b/src/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt
@@ -1,2 +1,8 @@
#nullable enable
static Microsoft.Maui.SafeAreaEdges.Container.get -> Microsoft.Maui.SafeAreaEdges
+Microsoft.Maui.HybridWebViewInvoker
+Microsoft.Maui.HybridWebViewInvoker.HybridWebViewInvoker(object? invokeJavaScriptTarget, System.Type? invokeJavaScriptType) -> void
+abstract Microsoft.Maui.HybridWebViewInvoker.InvokeMethodAsync(string! methodName, string![]? paramJsonValues) -> System.Threading.Tasks.Task<string?>!
+Microsoft.Maui.HybridWebViewInvokerRegistry
+static Microsoft.Maui.HybridWebViewInvokerRegistry.Register(object! view, Microsoft.Maui.HybridWebViewInvoker! invoker) -> void
+static Microsoft.Maui.HybridWebViewInvokerRegistry.TryGetInvoker(object! view, out Microsoft.Maui.HybridWebViewInvoker? invoker) -> bool
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Description Updates `eng/scripts/get-maui-pr.sh` and `eng/scripts/get-maui-pr.ps1` so users can still apply PR package artifacts when the aggregate `maui-pr` build is red because of unrelated CI legs, as long as the package-producing artifacts exist for the current PR commit. ### Changes - Treat a red aggregate `maui-pr` build as a warning instead of an immediate abort. - Keep `PackageArtifacts` as the hard gate before downloading/applying packages. - Filter AzDO fallback builds to the current PR head/merge context using `triggerInfo.pr.sourceSha`, `sourceVersion`, and the PR merge SHA. - Warn when `Pack macOS` or `Pack Windows` timeline records do not report success. - Update troubleshooting text to refer to completed `maui-pr` builds with `PackageArtifacts` rather than green checks. ### Validation - `bash -n eng/scripts/get-maui-pr.sh` - PowerShell parser validation for `eng/scripts/get-maui-pr.ps1` - `git diff --check` - Local throwaway MAUI projects under `/Volumes/NieuwVolume/maui-pr-artifact-verification-20260616101523`: - PR `#35805`: red aggregate build `1461390`, `PackageArtifacts` present, pack jobs succeeded; Bash and PowerShell scripts applied package `10.0.80-ci.pr35805.26312.37`; `dotnet restore` succeeded. - PR `#35923`: green aggregate build path applied package `10.0.80-ci.pr35923.26315.57`; `dotnet restore` succeeded. - PR `#35626`: missing `PackageArtifacts` failed before mutating the project. - PR `#999999`: nonexistent PR failed cleanly during PR lookup. - Wrong-SHA harness for PR `#35805`: refused to use older completed builds when none matched the requested head/merge commit. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolves the AppHostBuilderExtensions conflict by keeping this PR's removal of AddControlsHandlers (handlers now resolved via [ElementHandler] attributes). Now that #35626 made HybridWebView AOT-safe and removed the RuntimeFeature.IsHybridWebViewSupported feature switch, migrate HybridWebView to the attribute pattern as well: - Add [ElementHandler(typeof(HybridWebViewHandler))] to HybridWebView. - Drop the switch-guarded DI registration in SetupDefaults; register IHybridWebViewTaskManager unconditionally (matching net11.0). - Remove the IsHybridWebViewSupported switch this branch had re-added to RuntimeFeature.cs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Root Cause
HybridWebView's JavaScript-to-.NET invocation path used runtime reflection and dynamic JSON serialization to find target methods, deserialize parameters, invoke .NET methods, and serialize return values. That legacy model is not NativeAOT-safe and required the
RuntimeFeature.IsHybridWebViewSupportedfeature switch so trimmed/AOT apps could disable HybridWebView support instead of hitting trim/AOT warnings.Description of Change
This PR adds an AOT-safe JS-to-.NET dispatch path for HybridWebView using a Roslyn source generator plus C# interceptors.
The new API is:
The source generator intercepts that direct call at compile time and generates an
HybridWebViewInvokerimplementation with fully typed delegates. Generated invokers use the suppliedJsonSerializerContext/JsonTypeInfo<T>metadata for parameters and return values, so the AOT-safe path avoids runtime method discovery,MakeGenericMethod,Activator.CreateInstance, and dynamic JSON type resolution.The overload body intentionally throws if it is reached. That is by design: the
JsonSerializerContextoverload must be intercepted. Non-interception means the analyzer was not referenced, analyzers were disabled, or the call shape was unsupported; that is a non-recoverable build/configuration bug, not a runtime fallback scenario.There are no intentional JavaScript protocol/runtime changes in this PR. An earlier generated
HybridWebView.jscompiler-output-only diff was reverted.Key Technical Details
src/Core/src/HybridWebViewSourceGen/HybridWebViewInvokeTargetGenerator.csto generate typed invokers for directHybridWebView.SetInvokeJavaScriptTarget<T>(T, JsonSerializerContext)calls, including inherited public methods and interface-typed invoke targets. The generator reports diagnostics for unsupported overloads, open generic targets, and invoke target types that are not accessible to generated code.HybridWebViewInvokerinto an abstract base class that stores JavaScript invocation target/type metadata and defines the invoker contract.[EditorBrowsable(EditorBrowsableState.Never)]Invokeras the generated-code hook.HybridWebViewexposes it directly, andIHybridWebView.Invokerkeeps the source-generated interceptor usable when the receiver is typed asIHybridWebView.HybridWebView's shippedIHybridWebView.InvokeJavaScriptTarget/InvokeJavaScriptTypemembers delegate to the configured invoker and throw if no invoker is configured.ReflectionHybridWebViewInvokerboth derive fromHybridWebViewInvoker; generated invokers assignInvoker = new Invoker(...)through the receiver, including when the call site is typed asIHybridWebView.Microsoft.Maui.Core.HybridWebViewSourceGen.dllintoMicrosoft.Maui.Controls.Build.Tasksand included it fromMicrosoft.Maui.Controls.targets, so consuming apps get the interceptor analyzer automatically.HybridWebView.SetInvokeJavaScriptTarget<T>(T target)public API for compatibility. It registersReflectionHybridWebViewInvoker, preserves target metadata withDynamicallyAccessedMembers, and is marked with[RequiresUnreferencedCode]/[RequiresDynamicCode]to direct trim/AOT apps to the newJsonSerializerContextoverload.ReflectionHybridWebViewInvokerwith[RequiresUnreferencedCode]/[RequiresDynamicCode]so the legacy reflection path is visibly not the NativeAOT-safe implementation.IHybridWebView.InvokeJavaScriptTargetandIHybridWebView.InvokeJavaScriptTypemembers to avoid public API removals.RuntimeFeature.IsHybridWebViewSupportedand the associated feature-switch documentation entry because the supported path is now source-generated instead of runtime-disabled.Compatibility and Migration
Existing code continues to compile:
That legacy overload remains available for compatibility, but trimmed/NativeAOT builds will warn because it uses the reflection invoker.
For trim/AOT-safe apps, migrate to the context overload and include every parameter/return type used by JavaScript-to-.NET calls in the context:
What NOT to Do
JsonSerializerContextoverload. If it is not intercepted, the source generator/analyzer setup is broken.HybridWebView.SetInvokeJavaScriptTarget<T>(T)method; it must remain public for compatibility.IHybridWebView.InvokeJavaScriptTargetorIHybridWebView.InvokeJavaScriptType; they are shipped public API.HybridWebViewInvokerto Controls PublicAPI files.HybridWebView.jsunless the TypeScript source/protocol intentionally changes.Validation
Validated locally with targeted builds/tests:
dotnet build src/Core/src/Core.csproj -c Debug -f netstandard2.0dotnet build src/Core/src/Core.csproj -c Debug -f netstandard2.1dotnet build src/Controls/src/Core/Controls.Core.csproj -c Debug -f netstandard2.0dotnet build src/Controls/src/Core/Controls.Core.csproj -c Debug -f netstandard2.1dotnet build src/Controls/src/Core/Controls.Core.csproj -c Debug -f net11.0dotnet build src/Controls/src/Build.Tasks/Controls.Build.Tasks.csproj -c Debugdotnet test src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj -c Debug -f net11.0dotnet pack src/Controls/src/Build.Tasks/Controls.Build.Tasks.csproj -c Debug --no-build, then inspected the package to confirmMicrosoft.Maui.Core.HybridWebViewSourceGen.dll/.pdbare included underbuildTransitive/netstandard2.0.dotnet test src/Controls/tests/SourceGen.UnitTests/SourceGen.UnitTests.csproj -c Debug --filter FullyQualifiedName~HybridWebViewSourceGenTests(8 focused HybridWebView source-generator tests).dotnet build src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj -c Debug -f net11.0-androidwith local Android target override, to verify generated interceptors compile for device tests.Issues Fixed
Fixes #34867
Fixes #35740
Partially addresses #35745 — this PR removes the HybridWebView
IL2026/IL3050(trim/AOT) warnings onHybridWebViewHandler, but theAOTTemplateTest.PublishNativeAOT*leg that issue also tracks still fails on an unrelated macios-SDK warning (apply-preserve-attribute.xmlIL2009onUIKit.UIGestureRecognizer.Callback) that this PR does not change. Intentionally not using a closing keyword so the issue stays open until that is resolved.Related (not fixed by this PR — verify separately): #35995 and #35749 (HybridWebView Windows
Controls.DeviceTests480 s timeout — a runtime/WebView2 issue, not trim/AOT).Supersedes #35403