From e1c578951c457dc8cba646efe28847dad1bff5ba Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Thu, 19 Feb 2026 19:11:39 -0800 Subject: [PATCH 1/4] Add Bazel test BUILD files for 8 Tier 1 libraries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add tests/BUILD.bazel for: - System.Threading (591 tests) - System.Threading.Overlapped (21 tests) - System.Threading.Tasks.Parallel (262 tests) - System.Threading.Thread (53 tests) - System.Threading.ThreadPool (69 tests) - System.Reflection.Emit (2625 tests) - System.Runtime.Intrinsics (12704 tests) - System.Runtime.InteropServices UnitTests (2505 tests) Also add supporting ref-only BUILD.bazel for: - System.Net.Sockets (needed by ThreadPool tests) - System.Reflection.MetadataLoadContext (needed by Reflection.Emit tests) Known test failures: - Reflection.Emit: 598 tests need MetadataLoadContext impl at runtime - Threading.Thread: 8 tests need ApartmentState sub-project binaries - InteropServices: 1 pre-existing ComVariant marshalling failure Update docs/bazel.md tracking table (20 → 28 libraries). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/bazel.md | 28 ++++----- src/libraries/System.Net.Sockets/BUILD.bazel | 12 ++++ .../System.Reflection.Emit/tests/BUILD.bazel | 36 +++++++++++ .../BUILD.bazel | 11 ++++ .../BUILD.bazel | 61 +++++++++++++++++++ .../tests/BUILD.bazel | 30 +++++++++ .../tests/BUILD.bazel | 23 +++++++ .../tests/BUILD.bazel | 27 ++++++++ .../System.Threading.Thread/tests/BUILD.bazel | 23 +++++++ .../tests/BUILD.bazel | 26 ++++++++ .../System.Threading/tests/BUILD.bazel | 25 ++++++++ 11 files changed, 288 insertions(+), 14 deletions(-) create mode 100644 src/libraries/System.Net.Sockets/BUILD.bazel create mode 100644 src/libraries/System.Reflection.Emit/tests/BUILD.bazel create mode 100644 src/libraries/System.Reflection.MetadataLoadContext/BUILD.bazel create mode 100644 src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/BUILD.bazel create mode 100644 src/libraries/System.Runtime.Intrinsics/tests/BUILD.bazel create mode 100644 src/libraries/System.Threading.Overlapped/tests/BUILD.bazel create mode 100644 src/libraries/System.Threading.Tasks.Parallel/tests/BUILD.bazel create mode 100644 src/libraries/System.Threading.Thread/tests/BUILD.bazel create mode 100644 src/libraries/System.Threading.ThreadPool/tests/BUILD.bazel create mode 100644 src/libraries/System.Threading/tests/BUILD.bazel diff --git a/docs/bazel.md b/docs/bazel.md index 8766e95716cd95..49dd5b7d5d5541 100644 --- a/docs/bazel.md +++ b/docs/bazel.md @@ -560,7 +560,7 @@ Library tests use the `library_test` macro from `src/tests/live_test.bzl`, which runs a reflection-based test runner (`LibraryTestRunner.cs`) under `corerun`. Each library test needs a `tests/BUILD.bazel` file. -**Summary**: 20 of ~187 libraries have Bazel test BUILD files. +**Summary**: 28 of ~187 libraries have Bazel test BUILD files. ### Tiers @@ -588,35 +588,35 @@ Libraries are grouped by implementation complexity: | System.Formats.Asn1 | ✅ | ✅ | 46 test files; ref-only dep | | System.IO.FileSystem.AccessControl | ✅ | ❌ | Windows-specific tests | | System.IO.FileSystem.DriveInfo | ✅ | ✅ | | -| System.IO.IsolatedStorage | ✅ | ❌ | | -| System.IO.MemoryMappedFiles | ✅ | ❌ | | +| System.IO.IsolatedStorage | ✅ | ❌ | Linked src files use SR (generated string resources) | +| System.IO.MemoryMappedFiles | ✅ | ❌ | Unix tests use LibraryImport partial methods needing source generator | | System.Linq | ✅ | ✅ | 71 test files | | System.Memory | ✅ | ✅ | 52143 tests (very large) | | System.Net.Primitives | ✅ (ref only) | ❌ | Needs impl build; many tests depend on this | | System.Numerics.Vectors | ✅ | ✅ | | | System.ObjectModel | ✅ | ✅ | | -| System.Reflection.Emit | ✅ | ❌ | | +| System.Reflection.Emit | ✅ | ✅ | 2027/2625 pass; 598 need MetadataLoadContext impl at runtime | | System.Reflection.Emit.ILGeneration | ✅ | ✅ | | | System.Reflection.Emit.Lightweight | ✅ | ✅ | | -| System.Reflection.Metadata | ✅ | ❌ | | +| System.Reflection.Metadata | ✅ | ❌ | 22 embedded resource DLLs need resource embedding support | | System.Reflection.TypeExtensions | ✅ | ✅ | 1 test skipped (TinyAssembly.dll content file) | | System.Resources.Writer | ✅ | ✅ | | | System.Runtime.CompilerServices.VisualC | ✅ | ✅ | | -| System.Runtime.InteropServices | ✅ | ❌ | | -| System.Runtime.Intrinsics | ✅ | ❌ | | -| System.Runtime.Loader | ✅ | ❌ | | +| System.Runtime.InteropServices | ✅ | ✅ | UnitTests; 2504/2505 pass; Windows/Drawing tests excluded | +| System.Runtime.Intrinsics | ✅ | ✅ | 12704 tests; Wasm PackedSimd tests excluded | +| System.Runtime.Loader | ✅ | ❌ | 34 ProjectReferences to sub-projects need separate builds | | System.Runtime.Numerics | ✅ | ✅ | 176 tests pass (large) | -| System.Runtime.Serialization.Formatters | ✅ | ❌ | | +| System.Runtime.Serialization.Formatters | ✅ | ❌ | Needs ~10 external library builds (CodeDom, Composition, etc.) | | System.Security.AccessControl | ✅ | ❌ | Windows-specific tests | | System.Security.Claims | ✅ | ✅ | | | System.Security.Cryptography | ✅ | ❌ | | | System.Security.Principal.Windows | ✅ | ❌ | Windows-specific tests | | System.Text.Encoding.Extensions | ✅ | ✅ | | -| System.Threading | ✅ | ❌ | | -| System.Threading.Overlapped | ✅ | ❌ | | -| System.Threading.Tasks.Parallel | ✅ | ❌ | | -| System.Threading.Thread | ✅ | ❌ | | -| System.Threading.ThreadPool | ✅ | ❌ | | +| System.Threading | ✅ | ✅ | 591 tests pass | +| System.Threading.Overlapped | ✅ | ✅ | 21 tests; 2 skipped | +| System.Threading.Tasks.Parallel | ✅ | ✅ | 262 tests pass | +| System.Threading.Thread | ✅ | ✅ | 45/53 pass; 8 need ApartmentState sub-project binaries | +| System.Threading.ThreadPool | ✅ | ✅ | 69 tests; 1 skipped | ### Tier 2 — Self-contained, need source BUILD first diff --git a/src/libraries/System.Net.Sockets/BUILD.bazel b/src/libraries/System.Net.Sockets/BUILD.bazel new file mode 100644 index 00000000000000..28746b94518127 --- /dev/null +++ b/src/libraries/System.Net.Sockets/BUILD.bazel @@ -0,0 +1,12 @@ +load("//src/libraries:defs.bzl", "netcoreapp_ref_assembly") + +netcoreapp_ref_assembly( + name = "ref_System.Net.Sockets", + srcs = [ + "ref/System.Net.Sockets.cs", + ], + deps = [ + "//src/libraries:ref_System.Runtime", + "//src/libraries/System.Net.Primitives:ref_System.Net.Primitives", + ], +) diff --git a/src/libraries/System.Reflection.Emit/tests/BUILD.bazel b/src/libraries/System.Reflection.Emit/tests/BUILD.bazel new file mode 100644 index 00000000000000..ec99e80727cdd6 --- /dev/null +++ b/src/libraries/System.Reflection.Emit/tests/BUILD.bazel @@ -0,0 +1,36 @@ +load("//src/tests:live_test.bzl", "library_test") + +library_test( + name = "System.Reflection.Emit.Tests", + srcs = glob( + ["**/*.cs"], + exclude = [ + # Missing closing brace - upstream bug + "TypeBuilder/TypeBuilderInstantiationErrorMessageTests.cs", + ], + ) + [ + "//src/libraries/Common/tests:System/IO/TempFile.cs", + ], + deps = [ + "//src/libraries/System.Reflection.Emit:ref_System.Reflection.Emit", + "//src/libraries/System.Reflection.Emit.ILGeneration:ref_System.Reflection.Emit.ILGeneration", + "//src/libraries/System.Reflection.Emit.Lightweight:ref_System.Reflection.Emit.Lightweight", + "//src/libraries/System.Reflection.MetadataLoadContext:ref_System.Reflection.MetadataLoadContext", + "//src/libraries/System.Reflection.Metadata:ref_System.Reflection.Metadata", + "//src/libraries/System.Reflection.Primitives:ref_System.Reflection.Primitives", + "//src/libraries/System.Collections.Immutable:ref_System.Collections.Immutable", + "//src/libraries/System.Collections.Concurrent:ref_System.Collections.Concurrent", + "//src/libraries/System.Diagnostics.StackTrace:ref_System.Diagnostics.StackTrace", + "//src/libraries/System.Resources.Writer:ref_System.Resources.Writer", + "//src/libraries/System.Threading:ref_System.Threading", + "//src/libraries/Common/tests:TestUtilities", + "@paket.main//microsoft.dotnet.remoteexecutor", + "@paket.main//microsoft.dotnet.xunitassert", + "@paket.main//microsoft.dotnet.xunitextensions", + "@paket.main//xunit.abstractions", + "@paket.main//xunit.extensibility.core", + ], + allow_unsafe_blocks = True, + size = "large", + keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", +) diff --git a/src/libraries/System.Reflection.MetadataLoadContext/BUILD.bazel b/src/libraries/System.Reflection.MetadataLoadContext/BUILD.bazel new file mode 100644 index 00000000000000..f4d46ba21f97c9 --- /dev/null +++ b/src/libraries/System.Reflection.MetadataLoadContext/BUILD.bazel @@ -0,0 +1,11 @@ +load("//src/libraries:defs.bzl", "netcoreapp_ref_assembly") + +netcoreapp_ref_assembly( + name = "ref_System.Reflection.MetadataLoadContext", + srcs = [ + "ref/System.Reflection.MetadataLoadContext.cs", + ], + deps = [ + "//src/libraries:ref_System.Runtime", + ], +) diff --git a/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/BUILD.bazel b/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/BUILD.bazel new file mode 100644 index 00000000000000..f6b151b449c542 --- /dev/null +++ b/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/BUILD.bazel @@ -0,0 +1,61 @@ +load("//src/tests:live_test.bzl", "library_test") + +library_test( + name = "System.Runtime.InteropServices.Tests", + srcs = glob( + ["**/*.cs"], + exclude = [ + # Windows-specific tests + "System/Runtime/InteropServices/ComAwareEventInfoTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/ChangeWrapperHandleStrengthTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/CreateWrapperOfTypeTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/FinalReleaseComObjectTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GenerateGuidForTypeTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GenerateProgIdForTypeTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetComObjectDataTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetIDispatchForObjectTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetNativeVariantForObjectTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetObjectForIUnknownTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetObjectForNativeVariantTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetStartComSlotTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetTypedObjectForIUnknownTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetUniqueObjectForIUnknownTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/IsComObjectTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/IsTypeVisibleFromComTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/QueryInterfaceTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/ReleaseComObjectTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/SetComObjectDataTests.Windows.cs", + "System/Runtime/InteropServices/Marshal/Common/CommonTypes.Windows.cs", + "System/Runtime/InteropServices/Marshal/GetEndComSlotTests.Windows.cs", + "System/Runtime/InteropServices/PosixSignalRegistrationTests.Windows.cs", + # Not included in the MSBuild project file + "System/Runtime/InteropServices/Marshalling/ComObjectTests.cs", + # Needs System.Drawing.Primitives (not yet in Bazel) + "System/Runtime/InteropServices/Marshal/GetNativeVariantForObjectTests.cs", + "System/Runtime/InteropServices/Marshal/GetObjectForNativeVariantTests.cs", + "System/Runtime/InteropServices/Marshal/GetObjectsForNativeVariantsTests.cs", + ], + ) + [ + "//src/libraries/Common/tests:System/GenericMathHelpers.cs", + "//src/libraries/Common:src/Interop/Unix/Interop.Libraries.cs", + ], + deps = [ + "//src/libraries/System.Threading:ref_System.Threading", + "//src/libraries/System.Threading.Thread:ref_System.Threading.Thread", + "//src/libraries/System.Reflection.Emit:ref_System.Reflection.Emit", + "//src/libraries/System.Reflection.Emit.ILGeneration:ref_System.Reflection.Emit.ILGeneration", + "//src/libraries:ref_Microsoft.Win32.Primitives", + "//src/libraries/System.Collections.Concurrent:ref_System.Collections.Concurrent", + "//src/libraries/System.Collections.Immutable:ref_System.Collections.Immutable", + "//src/libraries/System.Runtime.Numerics:ref_System.Runtime.Numerics", + "//src/libraries/Common/tests:TestUtilities", + "@paket.main//microsoft.dotnet.remoteexecutor", + "@paket.main//microsoft.dotnet.xunitassert", + "@paket.main//microsoft.dotnet.xunitextensions", + "@paket.main//xunit.abstractions", + "@paket.main//xunit.extensibility.core", + ], + allow_unsafe_blocks = True, + size = "large", + keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", +) diff --git a/src/libraries/System.Runtime.Intrinsics/tests/BUILD.bazel b/src/libraries/System.Runtime.Intrinsics/tests/BUILD.bazel new file mode 100644 index 00000000000000..d25f3b978fed3d --- /dev/null +++ b/src/libraries/System.Runtime.Intrinsics/tests/BUILD.bazel @@ -0,0 +1,30 @@ +load("//src/tests:live_test.bzl", "library_test") + +library_test( + name = "System.Runtime.Intrinsics.Tests", + srcs = glob( + ["**/*.cs"], + exclude = [ + # Wasm-specific tests (require PackedSimd hardware support) + "Wasm/**", + ], + ) + [ + "//src/libraries/Common/tests:System/GenericMathTestMemberData.cs", + ], + deps = [ + "//src/libraries/System.Runtime.Numerics:ref_System.Runtime.Numerics", + "//src/libraries/Common/tests:TestUtilities", + "@paket.main//microsoft.dotnet.remoteexecutor", + "@paket.main//microsoft.dotnet.xunitassert", + "@paket.main//microsoft.dotnet.xunitextensions", + "@paket.main//xunit.abstractions", + "@paket.main//xunit.extensibility.core", + ], + allow_unsafe_blocks = True, + nowarn = [ + "1718", + "SYSLIB0013", + ], + size = "large", + keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", +) diff --git a/src/libraries/System.Threading.Overlapped/tests/BUILD.bazel b/src/libraries/System.Threading.Overlapped/tests/BUILD.bazel new file mode 100644 index 00000000000000..e85c1b7eee7ed0 --- /dev/null +++ b/src/libraries/System.Threading.Overlapped/tests/BUILD.bazel @@ -0,0 +1,23 @@ +load("//src/tests:live_test.bzl", "library_test") + +library_test( + name = "System.Threading.Overlapped.Tests", + srcs = glob(["*.cs"]) + [ + "//src/libraries/Common/tests:System/Threading/ThreadTestHelpers.cs", + ], + deps = [ + "//src/libraries/System.Threading.Overlapped:ref_System.Threading.Overlapped", + "//src/libraries/System.Threading:ref_System.Threading", + "//src/libraries/System.Threading.Thread:ref_System.Threading.Thread", + "//src/libraries/System.Threading.ThreadPool:ref_System.Threading.ThreadPool", + "//src/libraries:ref_Microsoft.Win32.Primitives", + "//src/libraries/Common/tests:TestUtilities", + "@paket.main//microsoft.dotnet.remoteexecutor", + "@paket.main//microsoft.dotnet.xunitassert", + "@paket.main//microsoft.dotnet.xunitextensions", + "@paket.main//xunit.abstractions", + "@paket.main//xunit.extensibility.core", + ], + allow_unsafe_blocks = True, + keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", +) diff --git a/src/libraries/System.Threading.Tasks.Parallel/tests/BUILD.bazel b/src/libraries/System.Threading.Tasks.Parallel/tests/BUILD.bazel new file mode 100644 index 00000000000000..3c3e289eb07bee --- /dev/null +++ b/src/libraries/System.Threading.Tasks.Parallel/tests/BUILD.bazel @@ -0,0 +1,27 @@ +load("//src/tests:live_test.bzl", "library_test") + +library_test( + name = "System.Threading.Tasks.Parallel.Tests", + srcs = glob(["*.cs"]) + [ + "//src/libraries/Common/tests:System/Diagnostics/Tracing/TestEventListener.cs", + "//src/libraries/Common/tests:System/Threading/ThreadPoolHelpers.cs", + ], + deps = [ + "//src/libraries/System.Threading.Tasks.Parallel:ref_System.Threading.Tasks.Parallel", + "//src/libraries/System.Threading:ref_System.Threading", + "//src/libraries/System.Threading.Thread:ref_System.Threading.Thread", + "//src/libraries/System.Threading.ThreadPool:ref_System.Threading.ThreadPool", + "//src/libraries/System.Collections.Concurrent:ref_System.Collections.Concurrent", + "//src/libraries/System.Collections.Immutable:ref_System.Collections.Immutable", + "//src/libraries/System.Runtime.Numerics:ref_System.Runtime.Numerics", + "//src/libraries/System.Diagnostics.Tracing:ref_System.Diagnostics.Tracing", + "//src/libraries/Common/tests:TestUtilities", + "@paket.main//microsoft.dotnet.remoteexecutor", + "@paket.main//microsoft.dotnet.xunitassert", + "@paket.main//microsoft.dotnet.xunitextensions", + "@paket.main//xunit.abstractions", + "@paket.main//xunit.extensibility.core", + ], + size = "large", + keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", +) diff --git a/src/libraries/System.Threading.Thread/tests/BUILD.bazel b/src/libraries/System.Threading.Thread/tests/BUILD.bazel new file mode 100644 index 00000000000000..65a93f1354fc8c --- /dev/null +++ b/src/libraries/System.Threading.Thread/tests/BUILD.bazel @@ -0,0 +1,23 @@ +load("//src/tests:live_test.bzl", "library_test") + +library_test( + name = "System.Threading.Thread.Tests", + srcs = glob(["*.cs"]) + [ + "//src/libraries/Common/tests:System/Threading/ThreadTestHelpers.cs", + ], + deps = [ + "//src/libraries/System.Threading.Thread:ref_System.Threading.Thread", + "//src/libraries/System.Threading:ref_System.Threading", + "//src/libraries/System.Threading.ThreadPool:ref_System.Threading.ThreadPool", + "//src/libraries/System.Runtime.Serialization.Formatters:ref_System.Runtime.Serialization.Formatters", + "//src/libraries/System.Security.Claims:ref_System.Security.Claims", + "//src/libraries/Common/tests:TestUtilities", + "@paket.main//microsoft.dotnet.remoteexecutor", + "@paket.main//microsoft.dotnet.xunitassert", + "@paket.main//microsoft.dotnet.xunitextensions", + "@paket.main//xunit.abstractions", + "@paket.main//xunit.extensibility.core", + ], + allow_unsafe_blocks = True, + keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", +) diff --git a/src/libraries/System.Threading.ThreadPool/tests/BUILD.bazel b/src/libraries/System.Threading.ThreadPool/tests/BUILD.bazel new file mode 100644 index 00000000000000..a6fedf436c880f --- /dev/null +++ b/src/libraries/System.Threading.ThreadPool/tests/BUILD.bazel @@ -0,0 +1,26 @@ +load("//src/tests:live_test.bzl", "library_test") + +library_test( + name = "System.Threading.ThreadPool.Tests", + srcs = glob(["*.cs"]) + [ + "//src/libraries/Common/tests:System/IO/TempFile.cs", + "//src/libraries/Common/tests:System/Threading/ThreadTestHelpers.cs", + ], + deps = [ + "//src/libraries/System.Threading.ThreadPool:ref_System.Threading.ThreadPool", + "//src/libraries/System.Threading:ref_System.Threading", + "//src/libraries/System.Threading.Thread:ref_System.Threading.Thread", + "//src/libraries/System.Threading.Overlapped:ref_System.Threading.Overlapped", + "//src/libraries/System.Diagnostics.Tracing:ref_System.Diagnostics.Tracing", + "//src/libraries/System.Net.Primitives:ref_System.Net.Primitives", + "//src/libraries/System.Net.Sockets:ref_System.Net.Sockets", + "//src/libraries/Common/tests:TestUtilities", + "@paket.main//microsoft.dotnet.remoteexecutor", + "@paket.main//microsoft.dotnet.xunitassert", + "@paket.main//microsoft.dotnet.xunitextensions", + "@paket.main//xunit.abstractions", + "@paket.main//xunit.extensibility.core", + ], + allow_unsafe_blocks = True, + keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", +) diff --git a/src/libraries/System.Threading/tests/BUILD.bazel b/src/libraries/System.Threading/tests/BUILD.bazel new file mode 100644 index 00000000000000..ae0958b648f3e2 --- /dev/null +++ b/src/libraries/System.Threading/tests/BUILD.bazel @@ -0,0 +1,25 @@ +load("//src/tests:live_test.bzl", "library_test") + +library_test( + name = "System.Threading.Tests", + srcs = glob(["*.cs"]) + [ + "//src/libraries/Common/tests:System/Diagnostics/Tracing/TestEventListener.cs", + "//src/libraries/Common/tests:System/Threading/ThreadTestHelpers.cs", + ], + deps = [ + "//src/libraries/System.Threading:ref_System.Threading", + "//src/libraries/System.Threading.Thread:ref_System.Threading.Thread", + "//src/libraries/System.Threading.ThreadPool:ref_System.Threading.ThreadPool", + "//src/libraries/System.Diagnostics.Tracing:ref_System.Diagnostics.Tracing", + "//src/libraries/System.Runtime.Serialization.Formatters:ref_System.Runtime.Serialization.Formatters", + "//src/libraries/Common/tests:TestUtilities", + "@paket.main//microsoft.dotnet.remoteexecutor", + "@paket.main//microsoft.dotnet.xunitassert", + "@paket.main//microsoft.dotnet.xunitextensions", + "@paket.main//xunit.abstractions", + "@paket.main//xunit.extensibility.core", + ], + allow_unsafe_blocks = True, + size = "large", + keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", +) From 9a7852b356c25fb4639fd7c8ad8acecedf1ccaef Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Fri, 20 Feb 2026 00:12:46 -0800 Subject: [PATCH 2/4] Add ComInterfaceGenerator Bazel target for COM source generation The test GeneratedComInterfaceType_Marshals_To_UNKNOWN was failing because the [GeneratedComInterface] and [GeneratedComClass] attributes require the ComInterfaceGenerator source generator to produce COM marshalling code at compile time. Without it, GetComExposedTypeDetails() returns null and ConvertToUnmanaged throws ArgumentException. Add the ComInterfaceGenerator as a csharp_library target (matching the LibraryImportGenerator pattern) and wire it as an analyzer for the System.Runtime.InteropServices.Tests test target. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../BUILD.bazel | 48 +++++++++++++++++++ .../BUILD.bazel | 4 ++ 2 files changed, 52 insertions(+) diff --git a/src/libraries/System.Runtime.InteropServices/BUILD.bazel b/src/libraries/System.Runtime.InteropServices/BUILD.bazel index 223da4484a03f6..9ad8b90d310b16 100644 --- a/src/libraries/System.Runtime.InteropServices/BUILD.bazel +++ b/src/libraries/System.Runtime.InteropServices/BUILD.bazel @@ -92,6 +92,54 @@ csharp_library( visibility = ["//visibility:public"], ) +csharp_library( + name = "ComInterfaceGenerator", + out = "Microsoft.Interop.ComInterfaceGenerator", + srcs = glob(["gen/ComInterfaceGenerator/**/*.cs"]) + [ + "//src/libraries/System.Private.CoreLib:src/System/Diagnostics/CodeAnalysis/NullableAttributes.cs", + "//src/libraries/System.Private.CoreLib:src/System/Runtime/CompilerServices/IsExternalInit.cs", + "//src/libraries/System.Private.CoreLib:src/System/Index.cs", + + "//src/libraries/Common:src/Roslyn/DiagnosticDescriptorHelper.cs", + "//src/libraries/Common:src/Roslyn/GetBestTypeByMetadataName.cs", + "//src/libraries/Common:src/System/SR.cs", + + "gen/Common/OperationExtensions.cs", + "gen/Common/ConvertToSourceGeneratedInteropFixer.cs", + "gen/Common/FixAllContextExtensions.cs", + "gen/Common/UnreachableException.cs", + + # Production source included in the generator + "src/System/Runtime/InteropServices/Marshalling/ComInterfaceOptions.cs", + + # Test common source + "tests/Common/ExceptionMarshalling.cs", + ], + target_frameworks = ["netstandard2.0"], + langversion = "preview", + cls_compliant = False, + nullable = "annotations", + allow_unsafe_blocks = True, + defines = ["MICROSOFT_INTEROP_COMINTERFACEGENERATOR", "BAZEL"], + deps = [ + ":Microsoft.Interop.SourceGeneration", + "@paket.main//microsoft.codeanalysis.common", + "@paket.main//microsoft.codeanalysis.csharp", + "@paket.main//microsoft.codeanalysis.workspaces.common", + "@paket.main//microsoft.codeanalysis.csharp.workspaces", + "@paket.main//system.composition.attributedmodel", + "@paket.main//system.collections.immutable", + "@paket.main//system.memory", + ], + resx_file = "gen/Common/Resources/Strings.resx", + nowarn = [ + "CS3003", + # MSBuild does not generate XML docs for generator projects + "CS1574", + ], + visibility = ["//visibility:public"], +) + netcoreapp_ref_assembly( name = "ref_System.Runtime.InteropServices", srcs = [ diff --git a/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/BUILD.bazel b/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/BUILD.bazel index f6b151b449c542..e38dcb2a66ca16 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/BUILD.bazel +++ b/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/BUILD.bazel @@ -55,6 +55,10 @@ library_test( "@paket.main//xunit.abstractions", "@paket.main//xunit.extensibility.core", ], + analyzers = [ + "//src/libraries/System.Runtime.InteropServices:ComInterfaceGenerator", + "//src/libraries/System.Runtime.InteropServices:Microsoft.Interop.SourceGeneration", + ], allow_unsafe_blocks = True, size = "large", keyfile = "@nuget.microsoft.dotnet.arcade.sdk.v10.0.0-beta.26102.102//:tools/snk/Open.snk", From 0254a742d7aa028ef8c8d4934d29a253a667e112 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Fri, 20 Feb 2026 00:17:00 -0800 Subject: [PATCH 3/4] lock file --- MODULE.bazel.lock | 54 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index f70065b0e00c63..3fb4961d12f33f 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -220,7 +220,7 @@ "moduleExtensions": { "//paket:paket.main_extension.bzl%main_extension": { "general": { - "bzlTransitiveDigest": "dq7T05EcXAZblN+7xaNaftckyC6m0W03QcZymunwHdQ=", + "bzlTransitiveDigest": "WlsBxdIhxSCEfeYQls2aqWIoxPDxhOIrQq4+qGP1/jM=", "usagesDigest": "/++DsNDsPEafh99irUtCwOTCNp57HApeC8MUxM9rbUo=", "recordedInputs": [ "REPO_MAPPING:,rules_dotnet rules_dotnet+", @@ -372,6 +372,20 @@ "sha512": "sha512-cNTNciqfphDvVTa6mVgmyfEq2SBJNu8VrR+0c0lLqmR2cQDD/e7r1ZQcuwgQkXppkAh5Tl+zIpTNO2nuVHiGWQ==" } }, + "nuget.microsoft.dotnet.xunitconsolerunner.v2.9.3-beta.26102.102": { + "repoRuleId": "@@rules_dotnet+//dotnet/private/rules/nuget:nuget_archive.bzl%nuget_archive", + "attributes": { + "sources": [ + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json" + ], + "id": "microsoft.dotnet.xunitconsolerunner", + "version": "2.9.3-beta.26102.102", + "sha512": "sha512-O8LurvKDwM1zXzVlyT3XbV9XjqCTFFPGH5dd1nSkVuvGRZ0b7sQz+ceK+2tGMWSa217tERVtB23e3F/ZUHpdRQ==" + } + }, "nuget.microsoft.dotnet.genfacades.v10.0.0-beta.26102.102": { "repoRuleId": "@@rules_dotnet+//dotnet/private/rules/nuget:nuget_archive.bzl%nuget_archive", "attributes": { @@ -638,6 +652,35 @@ "sha512": "sha512-oCrTAxGDsWHjfS5qJdc0N7D6QqwEyxmK4yd3l/M75pYAvqiSH3CxyT05iFfcOuhi2+RrsJqrcSmJwQmZlvEWUQ==" } }, + "nuget.microsoft.diasymreader.v2.0.0": { + "repoRuleId": "@@rules_dotnet+//dotnet/private/rules/nuget:nuget_archive.bzl%nuget_archive", + "attributes": { + "sources": [ + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json" + ], + "id": "microsoft.diasymreader", + "version": "2.0.0", + "sha512": "sha512-iiVGfxBzSLmi5NrsRyx4izNmPIcVcmN2tlmF+6rNG1pEaJgeolIUrvhkUFOKaV7QMYPytVgMmSd1V0SiBm/ocA==" + } + }, + "nuget.system.commandline.v2.0.4": { + "repoRuleId": "@@rules_dotnet+//dotnet/private/rules/nuget:nuget_archive.bzl%nuget_archive", + "attributes": { + "sources": [ + "https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-dotnet-52be9573/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json", + "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json" + ], + "id": "system.commandline", + "version": "2.0.4", + "sha512": "sha512-9HqXOnirwPz8/9e8TlZMtarnSYzCHpmaZWGD20ag75qsIMsb/LEhB+4uN/gT8bi7/bzoBg2/jx5PXYPFhiAjYg==" + } + }, "nuget.system.security.cryptography.protecteddata.v8.0.0": { "repoRuleId": "@@rules_dotnet+//dotnet/private/rules/nuget:nuget_archive.bzl%nuget_archive", "attributes": { @@ -737,6 +780,7 @@ "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"net462\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"net47\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"net471\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"net472\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"net48\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"net5.0\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"net6.0\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"net7.0\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Collections.Immutable\",\"System.Reflection.Metadata\"],\"net8.0\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Collections.Immutable\",\"System.Reflection.Metadata\"],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"netcoreapp2.1\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"netcoreapp2.2\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"netcoreapp3.0\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"netcoreapp3.1\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"],\"netstandard2.1\":[\"Microsoft.CodeAnalysis.Common\",\"Humanizer.Core\",\"System.Composition\",\"System.IO.Pipelines\",\"System.Threading.Channels\",\"Microsoft.CodeAnalysis.Analyzers\",\"System.Buffers\",\"System.Collections.Immutable\",\"System.Memory\",\"System.Reflection.Metadata\"]},\"framework_list\":[],\"id\":\"Microsoft.CodeAnalysis.Workspaces.Common\",\"name\":\"Microsoft.CodeAnalysis.Workspaces.Common\",\"sha512\":\"sha512-pUYbbvRUMo4kE+gjJnVsk8wFbMW49K+FcM8++h0swG3CK7qWbP/TG6XOIjtIZRID0Grd9GyQ7HviHS8uIBveFg==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"4.11.0\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[],\"netstandard2.1\":[]},\"framework_list\":[],\"id\":\"Microsoft.Diagnostics.Runtime\",\"name\":\"Microsoft.Diagnostics.Runtime\",\"sha512\":\"sha512-rPd/96TVGutNjbNr6aFn9f9f7NTaOyZYy51DnlM63nNfK9EwWXOSLZgbXpKcKaxi5Vcvy2oO3tlgabxnthW3PA==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"1.0.5\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[],\"netstandard2.1\":[]},\"framework_list\":[],\"id\":\"Microsoft.DotNet.Arcade.Sdk\",\"name\":\"Microsoft.DotNet.Arcade.Sdk\",\"sha512\":\"sha512-cNTNciqfphDvVTa6mVgmyfEq2SBJNu8VrR+0c0lLqmR2cQDD/e7r1ZQcuwgQkXppkAh5Tl+zIpTNO2nuVHiGWQ==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"10.0.0-beta.26102.102\"}", + "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[],\"netstandard2.1\":[]},\"framework_list\":[],\"id\":\"Microsoft.DotNet.XUnitConsoleRunner\",\"name\":\"Microsoft.DotNet.XUnitConsoleRunner\",\"sha512\":\"sha512-O8LurvKDwM1zXzVlyT3XbV9XjqCTFFPGH5dd1nSkVuvGRZ0b7sQz+ceK+2tGMWSa217tERVtB23e3F/ZUHpdRQ==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"2.9.3-beta.26102.102\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[],\"netstandard2.1\":[]},\"framework_list\":[],\"id\":\"Microsoft.DotNet.GenFacades\",\"name\":\"Microsoft.DotNet.GenFacades\",\"sha512\":\"sha512-FnGWkHedQ3mN1exJ8z74sdS92Vkx/R50KtYTn/Gpu12df0sAnWlCAuROVVLjENtgcXYnLjV2yw68AST3DEllgQ==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"10.0.0-beta.26102.102\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[\"microsoft.diagnostics.runtime\"],\"net47\":[\"microsoft.diagnostics.runtime\"],\"net471\":[\"microsoft.diagnostics.runtime\"],\"net472\":[\"microsoft.diagnostics.runtime\"],\"net48\":[\"microsoft.diagnostics.runtime\"],\"net5.0\":[\"microsoft.diagnostics.runtime\"],\"net6.0\":[\"microsoft.diagnostics.runtime\"],\"net7.0\":[\"microsoft.diagnostics.runtime\"],\"net8.0\":[\"microsoft.diagnostics.runtime\"],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[\"microsoft.diagnostics.runtime\"],\"netcoreapp2.1\":[\"microsoft.diagnostics.runtime\"],\"netcoreapp2.2\":[\"microsoft.diagnostics.runtime\"],\"netcoreapp3.0\":[\"microsoft.diagnostics.runtime\"],\"netcoreapp3.1\":[\"microsoft.diagnostics.runtime\"],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[\"microsoft.diagnostics.runtime\"],\"netstandard2.1\":[\"microsoft.diagnostics.runtime\"]},\"framework_list\":[],\"id\":\"Microsoft.DotNet.RemoteExecutor\",\"name\":\"Microsoft.DotNet.RemoteExecutor\",\"sha512\":\"sha512-oGoBqXg10tlky4M1Th/z9zBUnMXANU75brLWCEC0Qvo/bvFe0zP8FqpQrWSPU3qvujqmK2qAzeHynFUJMyJB2g==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"10.0.0-beta.26102.102\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[],\"netstandard2.1\":[]},\"framework_list\":[],\"id\":\"Microsoft.DotNet.XUnitAssert\",\"name\":\"Microsoft.DotNet.XUnitAssert\",\"sha512\":\"sha512-FEcSecBpMbnp9M4TaSOsXceKThSNckaWAZYqmHXKMI5Ql+SBCapm8pPJAyvkrcVaqdalIdHkSuyob5Erdf/F4Q==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"2.9.3-beta.26102.102\"}", @@ -756,6 +800,8 @@ "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[\"System.Buffers\"],\"net451\":[\"System.Buffers\"],\"net452\":[\"System.Buffers\"],\"net46\":[\"System.Buffers\"],\"net461\":[\"System.Buffers\"],\"net462\":[\"System.Buffers\"],\"net47\":[\"System.Buffers\"],\"net471\":[\"System.Buffers\"],\"net472\":[\"System.Buffers\"],\"net48\":[\"System.Buffers\"],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[\"System.Buffers\"],\"netcoreapp1.1\":[\"System.Buffers\"],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[\"System.Buffers\"],\"netstandard1.2\":[\"System.Buffers\"],\"netstandard1.3\":[\"System.Buffers\"],\"netstandard1.4\":[\"System.Buffers\"],\"netstandard1.5\":[\"System.Buffers\"],\"netstandard1.6\":[\"System.Buffers\"],\"netstandard2.0\":[\"System.Buffers\"],\"netstandard2.1\":[\"System.Buffers\"]},\"framework_list\":[],\"id\":\"System.Memory\",\"name\":\"System.Memory\",\"sha512\":\"sha512-6MjlNsl7lKw0Q8lAsw2tQ89ul9x6jD2Yk3EEj+dOFoYGOE9eAUO9wNhvd4O/n97oQXlkyzqKXXUnE+kLElFy3A==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"4.5.5\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[\"System.Collections.Immutable\",\"System.Memory\"],\"net462\":[\"System.Collections.Immutable\",\"System.Memory\"],\"net47\":[\"System.Collections.Immutable\",\"System.Memory\"],\"net471\":[\"System.Collections.Immutable\",\"System.Memory\"],\"net472\":[\"System.Collections.Immutable\",\"System.Memory\"],\"net48\":[\"System.Collections.Immutable\",\"System.Memory\"],\"net5.0\":[\"System.Collections.Immutable\",\"System.Memory\"],\"net6.0\":[\"System.Collections.Immutable\"],\"net7.0\":[\"System.Collections.Immutable\"],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[\"System.Collections.Immutable\",\"System.Memory\"],\"netcoreapp2.1\":[\"System.Collections.Immutable\",\"System.Memory\"],\"netcoreapp2.2\":[\"System.Collections.Immutable\",\"System.Memory\"],\"netcoreapp3.0\":[\"System.Collections.Immutable\",\"System.Memory\"],\"netcoreapp3.1\":[\"System.Collections.Immutable\",\"System.Memory\"],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[\"System.Collections.Immutable\",\"System.Memory\"],\"netstandard2.1\":[\"System.Collections.Immutable\",\"System.Memory\"]},\"framework_list\":[],\"id\":\"System.Reflection.Metadata\",\"name\":\"System.Reflection.Metadata\",\"sha512\":\"sha512-RRGojQ9bLmxf4KvLXCGOIYp6PqxmDGpsEh+p1TZCF97z2Vs/1glLPi3sSIB43m1ts7msByeuJMDPUvh8KxTpvQ==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"8.0.1\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[\"System.Memory\"],\"net462\":[\"System.Memory\"],\"net47\":[\"System.Memory\"],\"net471\":[\"System.Memory\"],\"net472\":[\"System.Memory\"],\"net48\":[\"System.Memory\"],\"net5.0\":[\"System.Memory\"],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[\"System.Memory\"],\"netcoreapp2.1\":[\"System.Memory\"],\"netcoreapp2.2\":[\"System.Memory\"],\"netcoreapp3.0\":[\"System.Memory\"],\"netcoreapp3.1\":[\"System.Memory\"],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[\"System.Memory\"],\"netstandard2.1\":[\"System.Memory\"]},\"framework_list\":[],\"id\":\"System.Resources.Extensions\",\"name\":\"System.Resources.Extensions\",\"sha512\":\"sha512-oCrTAxGDsWHjfS5qJdc0N7D6QqwEyxmK4yd3l/M75pYAvqiSH3CxyT05iFfcOuhi2+RrsJqrcSmJwQmZlvEWUQ==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"8.0.0\"}", + "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[],\"netstandard2.1\":[]},\"framework_list\":[],\"id\":\"Microsoft.DiaSymReader\",\"name\":\"Microsoft.DiaSymReader\",\"sha512\":\"sha512-iiVGfxBzSLmi5NrsRyx4izNmPIcVcmN2tlmF+6rNG1pEaJgeolIUrvhkUFOKaV7QMYPytVgMmSd1V0SiBm/ocA==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"2.0.0\"}", + "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[\"System.Memory\"],\"netstandard2.1\":[\"System.Memory\"]},\"framework_list\":[],\"id\":\"System.CommandLine\",\"name\":\"System.CommandLine\",\"sha512\":\"sha512-9HqXOnirwPz8/9e8TlZMtarnSYzCHpmaZWGD20ag75qsIMsb/LEhB+4uN/gT8bi7/bzoBg2/jx5PXYPFhiAjYg==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-dotnet-52be9573/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"2.0.4\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[\"System.Memory\"],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[\"System.Memory\"],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[\"System.Memory\"],\"netcoreapp2.1\":[\"System.Memory\"],\"netcoreapp2.2\":[\"System.Memory\"],\"netcoreapp3.0\":[\"System.Memory\"],\"netcoreapp3.1\":[\"System.Memory\"],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[\"System.Memory\"],\"netstandard2.1\":[\"System.Memory\"]},\"framework_list\":[],\"id\":\"System.Security.Cryptography.ProtectedData\",\"name\":\"System.Security.Cryptography.ProtectedData\",\"sha512\":\"sha512-hvcXZ/IR+KXxY9lC9S2izw5/fGYoODJR2r9kQSvs5v/HUAnBRuYYZPJrHzaT0CeDRJzIm8BHJb1ZrwHQ59j3uQ==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"8.0.0\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[],\"netstandard2.1\":[]},\"framework_list\":[],\"id\":\"System.Threading.Channels\",\"name\":\"System.Threading.Channels\",\"sha512\":\"sha512-M1s365f1lOc6s2585/ATW+KRRFFnaI6JvSSdE14n9ZKgvWnZHoJGoccqV41XvtRDrHMCMRNlwWFgt9yXTu3xQQ==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"8.0.0\"}", "{\"dependencies\":{\"net11\":[],\"net20\":[],\"net30\":[],\"net35\":[],\"net40\":[],\"net403\":[],\"net45\":[],\"net451\":[],\"net452\":[],\"net46\":[],\"net461\":[],\"net462\":[],\"net47\":[],\"net471\":[],\"net472\":[],\"net48\":[],\"net5.0\":[],\"net6.0\":[],\"net7.0\":[],\"net8.0\":[],\"netcoreapp1.0\":[],\"netcoreapp1.1\":[],\"netcoreapp2.0\":[],\"netcoreapp2.1\":[],\"netcoreapp2.2\":[],\"netcoreapp3.0\":[],\"netcoreapp3.1\":[],\"netstandard\":[],\"netstandard1.0\":[],\"netstandard1.1\":[],\"netstandard1.2\":[],\"netstandard1.3\":[],\"netstandard1.4\":[],\"netstandard1.5\":[],\"netstandard1.6\":[],\"netstandard2.0\":[],\"netstandard2.1\":[]},\"framework_list\":[],\"id\":\"xunit.abstractions\",\"name\":\"xunit.abstractions\",\"sha512\":\"sha512-PKJri5f0qEQPFvgY6CZR9XG8JROlWSdC/ZYLkkDQuID++Egn+yWjB+Yf57AZ8U6GRlP7z33uDQ4/r5BZPer2JA==\",\"sources\":[\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10-transport/nuget/v3/index.json\",\"https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json\"],\"targeting_pack_overrides\":[],\"version\":\"2.0.3\"}", @@ -774,6 +820,7 @@ "microsoft.codeanalysis.workspaces.common|4.11.0": [], "microsoft.diagnostics.runtime|1.0.5": [], "microsoft.dotnet.arcade.sdk|10.0.0-beta.26102.102": [], + "microsoft.dotnet.xunitconsolerunner|2.9.3-beta.26102.102": [], "microsoft.dotnet.genfacades|10.0.0-beta.26102.102": [], "microsoft.dotnet.remoteexecutor|10.0.0-beta.26102.102": [], "microsoft.dotnet.xunitassert|2.9.3-beta.26102.102": [], @@ -793,6 +840,8 @@ "system.memory|4.5.5": [], "system.reflection.metadata|8.0.1": [], "system.resources.extensions|8.0.0": [], + "microsoft.diasymreader|2.0.0": [], + "system.commandline|2.0.4": [], "system.security.cryptography.protecteddata|8.0.0": [], "system.threading.channels|8.0.0": [], "xunit.abstractions|2.0.3": [], @@ -811,6 +860,7 @@ "microsoft.codeanalysis.workspaces.common|4.11.0": [], "microsoft.diagnostics.runtime|1.0.5": [], "microsoft.dotnet.arcade.sdk|10.0.0-beta.26102.102": [], + "microsoft.dotnet.xunitconsolerunner|2.9.3-beta.26102.102": [], "microsoft.dotnet.genfacades|10.0.0-beta.26102.102": [], "microsoft.dotnet.remoteexecutor|10.0.0-beta.26102.102": [], "microsoft.dotnet.xunitassert|2.9.3-beta.26102.102": [], @@ -830,6 +880,8 @@ "system.memory|4.5.5": [], "system.reflection.metadata|8.0.1": [], "system.resources.extensions|8.0.0": [], + "microsoft.diasymreader|2.0.0": [], + "system.commandline|2.0.4": [], "system.security.cryptography.protecteddata|8.0.0": [], "system.threading.channels|8.0.0": [], "xunit.abstractions|2.0.3": [], From 88f199ead9aabf3afa3441157528212d3aecf3a3 Mon Sep 17 00:00:00 2001 From: Andy Gocke Date: Fri, 20 Feb 2026 16:17:44 -0800 Subject: [PATCH 4/4] Fix Bazel test failures for System.Reflection.Emit and System.Threading.Thread - Build System.Reflection.MetadataLoadContext impl assembly in Bazel and expose it as a ref_impl_pair (live_ target). Update Emit tests to use the live target so the DLL is available at runtime, fixing 598 test failures caused by FileNotFoundException. - Add csharp_binary targets for STAMain, MTAMain, and DefaultApartmentStateMain helper executables. Include them as test data so they are copied next to the test DLL at runtime. - Generate runtimeconfig.json for data DLLs in live_test.bzl so helper executables can be launched with 'dotnet exec' in the Bazel sandbox. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../System.Reflection.Emit/tests/BUILD.bazel | 2 +- .../BUILD.bazel | 34 ++++++++++++++++++- .../System.Threading.Thread/tests/BUILD.bazel | 24 +++++++++++++ src/tests/live_test.bzl | 11 ++++++ 4 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Reflection.Emit/tests/BUILD.bazel b/src/libraries/System.Reflection.Emit/tests/BUILD.bazel index ec99e80727cdd6..969d2da52debc8 100644 --- a/src/libraries/System.Reflection.Emit/tests/BUILD.bazel +++ b/src/libraries/System.Reflection.Emit/tests/BUILD.bazel @@ -15,7 +15,7 @@ library_test( "//src/libraries/System.Reflection.Emit:ref_System.Reflection.Emit", "//src/libraries/System.Reflection.Emit.ILGeneration:ref_System.Reflection.Emit.ILGeneration", "//src/libraries/System.Reflection.Emit.Lightweight:ref_System.Reflection.Emit.Lightweight", - "//src/libraries/System.Reflection.MetadataLoadContext:ref_System.Reflection.MetadataLoadContext", + "//src/libraries/System.Reflection.MetadataLoadContext:live_System.Reflection.MetadataLoadContext", "//src/libraries/System.Reflection.Metadata:ref_System.Reflection.Metadata", "//src/libraries/System.Reflection.Primitives:ref_System.Reflection.Primitives", "//src/libraries/System.Collections.Immutable:ref_System.Collections.Immutable", diff --git a/src/libraries/System.Reflection.MetadataLoadContext/BUILD.bazel b/src/libraries/System.Reflection.MetadataLoadContext/BUILD.bazel index f4d46ba21f97c9..809c381197eca6 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/BUILD.bazel +++ b/src/libraries/System.Reflection.MetadataLoadContext/BUILD.bazel @@ -1,4 +1,4 @@ -load("//src/libraries:defs.bzl", "netcoreapp_ref_assembly") +load("//src/libraries:defs.bzl", "netcoreapp_impl_assembly", "netcoreapp_ref_assembly", "ref_impl_pair") netcoreapp_ref_assembly( name = "ref_System.Reflection.MetadataLoadContext", @@ -9,3 +9,35 @@ netcoreapp_ref_assembly( "//src/libraries:ref_System.Runtime", ], ) + +netcoreapp_impl_assembly( + name = "impl_System.Reflection.MetadataLoadContext", + srcs = glob( + ["src/**/*.cs"], + exclude = [ + # netstandard-only; TypeExtensions.net.cs is used for netcoreapp + "src/System/Reflection/TypeLoading/General/TypeExtensions.netstandard.cs", + ], + ) + [ + "//src/libraries/Common:src/System/Obsoletions.cs", + ], + resx_file = "src/Resources/Strings.resx", + allow_unsafe_blocks = True, + deps = [ + "//src/libraries:ref_System.Runtime", + "//src/libraries/System.Collections:ref_System.Collections", + "//src/libraries/System.Collections.Concurrent:ref_System.Collections.Concurrent", + "//src/libraries/System.Collections.Immutable:ref_System.Collections.Immutable", + "//src/libraries/System.Memory:ref_System.Memory", + "//src/libraries/System.Reflection.Metadata:ref_System.Reflection.Metadata", + "//src/libraries/System.Runtime.InteropServices:ref_System.Runtime.InteropServices", + "//src/libraries/System.Threading:ref_System.Threading", + ], +) + +ref_impl_pair( + name = "live_System.Reflection.MetadataLoadContext", + ref = ":ref_System.Reflection.MetadataLoadContext", + lib = ":impl_System.Reflection.MetadataLoadContext", + visibility = ["//visibility:public"], +) diff --git a/src/libraries/System.Threading.Thread/tests/BUILD.bazel b/src/libraries/System.Threading.Thread/tests/BUILD.bazel index 65a93f1354fc8c..c62da7ef57671d 100644 --- a/src/libraries/System.Threading.Thread/tests/BUILD.bazel +++ b/src/libraries/System.Threading.Thread/tests/BUILD.bazel @@ -1,10 +1,34 @@ load("//src/tests:live_test.bzl", "library_test") +load("@rules_dotnet//dotnet:defs.bzl", "csharp_binary") + +csharp_binary( + name = "STAMain", + srcs = ["STAMain/STAMain.cs"], + target_frameworks = ["net10.0"], +) + +csharp_binary( + name = "MTAMain", + srcs = ["MTAMain/MTAMain.cs"], + target_frameworks = ["net10.0"], +) + +csharp_binary( + name = "DefaultApartmentStateMain", + srcs = ["DefaultApartmentStateMain/DefaultApartmentStateMain.cs"], + target_frameworks = ["net10.0"], +) library_test( name = "System.Threading.Thread.Tests", srcs = glob(["*.cs"]) + [ "//src/libraries/Common/tests:System/Threading/ThreadTestHelpers.cs", ], + data = [ + ":STAMain", + ":MTAMain", + ":DefaultApartmentStateMain", + ], deps = [ "//src/libraries/System.Threading.Thread:ref_System.Threading.Thread", "//src/libraries/System.Threading:ref_System.Threading", diff --git a/src/tests/live_test.bzl b/src/tests/live_test.bzl index ef530eb386fe21..b58c9051cd4463 100644 --- a/src/tests/live_test.bzl +++ b/src/tests/live_test.bzl @@ -314,6 +314,17 @@ def _generate_runtimeconfigs(ctx, dll, tfm, sdk_version, additional_runfiles): ctx.actions.write(output = re_runtimeconfig, content = runtimeconfig_content) additional_runfiles.append(re_runtimeconfig) + # Generate runtimeconfig.json for data DLLs (helper executables like + # STAMain.dll, MTAMain.dll) so they can be launched with "dotnet exec". + for f in ctx.files.data: + if f.basename.endswith(".dll"): + helper_name = f.basename.replace(".dll", "") + helper_runtimeconfig = ctx.actions.declare_file( + "%s/%s/%s.runtimeconfig.json" % (ctx.label.name, tfm, helper_name), + ) + ctx.actions.write(output = helper_runtimeconfig, content = runtimeconfig_content) + additional_runfiles.append(helper_runtimeconfig) + return test_runtimeconfig def _generate_test_depsfile(ctx, dll, tfm, additional_runfiles):