Skip to content

Point MSTest.Sdk back to the classic sourcegen + engine wiring#9825

Open
Evangelink wants to merge 1 commit into
rel/4.3from
dev/amauryleve/revert-mstestsdk-sourcegen
Open

Point MSTest.Sdk back to the classic sourcegen + engine wiring#9825
Evangelink wants to merge 1 commit into
rel/4.3from
dev/amauryleve/revert-mstestsdk-sourcegen

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Restores the MSTest.Sdk wiring to use the "old" source generation + engine setup (as shipped in 4.2.3), since we won't be able to properly fix the new source gen on the 4.3 line in time.

Confined to the src/Package/MSTest.Sdk layer — a targeted revert, not a full folder rollback:

  • Sdk/Sdk.props.template — expose MSTestEngineVersion again (was MSTestSourceGenerationVersion).
  • MSTest.Sdk.csprojGenerateTemplates injects the computed version under the legacy MSTestEngineVersion token (the value still comes from the source-generation prefix that drives the package).
  • Sdk/Runner/NativeAOT.targets — re-add the MSTest.Engine package reference and point both MSTest.Engine and MSTest.SourceGeneration at $(MSTestEngineVersion), using the existing 4.3 CPM PackageReference/PackageVersion pattern.

Deliberately kept intact (not reverted)

  • Central Package Management support
  • nuspec → csproj Pack refactor
  • The MSB4011 base-SDK-import (SDK-layering) fix
  • The Ctrf / JUnit / GitHubActions / OpenTelemetry report extensions
  • Directory.Build.props, the MSTest.SourceGeneration package project, and the acceptance-test infrastructure (which reads the version from the built package file name, not the MSBuild property)

Validation

build.cmd -pack -projects MSTest.Sdk.csproj -c Release succeeds with 0 warnings / 0 errors. The generated Sdk.props resolves ${MSTestEngineVersion} correctly (2.0.0-dev locally; keeps the alpha label for official builds).

Note

MSTest.Engine no longer exists as a project in this repo, so local/CI builds compute 2.0.0-dev and won't find a matching MSTest.Engine package on any feed. This wiring resolves correctly against the previously-published MSTest.Engine 2.0.0-alpha packages for official builds; SDK-based NativeAOT-engine acceptance tests will fail to restore locally until those packages are available.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

Copilot AI review requested due to automatic review settings July 10, 2026 14:51
@Evangelink Evangelink changed the base branch from main to rel/4.3 July 10, 2026 14:52
@Evangelink Evangelink marked this pull request as draft July 10, 2026 14:52
@Evangelink Evangelink force-pushed the dev/amauryleve/revert-mstestsdk-sourcegen branch 2 times, most recently from fa15e57 to 35a40d3 Compare July 10, 2026 14:57

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

🤖 Automated review by GitHub Copilot. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Review Summary

All 22 dimensions inspected — no issues found.

This is a clean, minimal, and well-scoped revert confined to the SDK layer:

Dimension Verdict
Correctness ✅ Token rename MSTestSourceGenerationVersionMSTestEngineVersion is consistent across all three files (props template, csproj, NativeAOT.targets).
Backward Compatibility ✅ Restores the property name consumers of 4.2.x relied on (MSTestEngineVersion). Users who already set it will continue to work.
MSBuild Patterns ✅ CPM dual-path (PackageReference + PackageVersion) pattern is correctly applied to the re-added MSTest.Engine entry, matching the existing MSTest.TestFramework block.
Public API Surface ✅ No new public .NET API added.
Security ✅ No secrets, no user-controlled interpolation.
Performance ✅ N/A — build-time only.
Documentation ✅ Comment in .csproj clearly explains the legacy token flow.

No inline comments warranted. LGTM from an automated perspective — human sign-off still required.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

The PR intends to restore classic MSTest.Sdk NativeAOT engine/source-generator wiring, but the submitted diff also contains extensive unrelated repository changes.

Changes:

  • Restores MSTest.Engine and legacy source-generation version wiring.
  • Adds broad platform, adapter, analyzer, extension, localization, and test changes.
  • Updates build infrastructure, dependencies, SDK versions, and agentic workflows.
Show a summary per file
File Description
test/UnitTests/TestFramework.UnitTests/Assertions/AssertTests.AreEquivalentTests.cs Adjusts null-equivalence tests.
test/UnitTests/MSTestAdapter.PlatformServices.UnitTests/MSTestAdapter.PlatformServices.UnitTests.csproj References the adapter project.
test/UnitTests/MSTestAdapter.PlatformServices.UnitTests/Extensions/TestResultExtensionsTests.cs Uses adapter-owned result properties.
test/UnitTests/MSTestAdapter.PlatformServices.UnitTests/Execution/TestRunInfoTests.cs Uses neutral test traits.
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs Removes the former test entry point.
test/UnitTests/Microsoft.Testing.Platform.UnitTests/TestHostOrchestratorManagerTests.cs Uses Assert.IsEmpty.
test/UnitTests/Microsoft.Testing.Platform.UnitTests/Services/TestApplicationResultTests.cs Tests zero-run minimum policy.
test/UnitTests/Microsoft.Testing.Platform.UnitTests/OutputDevice/NopPlatformOutputDeviceTests.cs Pins stable identity literals.
test/UnitTests/Microsoft.Testing.Platform.UnitTests/Messages/AsynchronousMessageBusTests.cs Uses Assert.IsEmpty.
test/UnitTests/Microsoft.Testing.Platform.UnitTests/IPC/ProtocolTests.cs Uses Assert.IsEmpty.
test/UnitTests/Microsoft.Testing.Platform.DotnetTestProtocolContract.UnitTests/DotnetTestProtocolSerializerTests.cs Uses Assert.IsEmpty.
test/UnitTests/Microsoft.Testing.Extensions.VSTestBridge.UnitTests/ObjectModel/ObjectModelConvertersTests.cs Supplies client capabilities.
test/UnitTests/Microsoft.Testing.Extensions.UnitTests/AzureDevOpsTestNodeIdentityTests.cs Removes an obsolete import.
test/Performance/MSTest.Performance.Runner/Steps/PlainProcess.cs Caches serializer options.
test/Performance/MSTest.Performance.Runner/Steps/DotnetTestProcess.cs Caches serializer options.
test/IntegrationTests/TestAssets/TimeoutTestProject/TimeoutTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/TestProject/TestProjectForDiscovery.csproj Removes legacy project metadata.
test/IntegrationTests/TestAssets/TestIdProject.FullyQualifiedTestStrategy/TestIdProject.FullyQualifiedStrategy.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/TestIdProject.DefaultStrategy/TestIdProject.DefaultStrategy.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/TestCategoriesFromTestDataRowProject/TestCategoriesFromTestDataRowProject.csproj Normalizes framework configuration.
test/IntegrationTests/TestAssets/SuiteLifeCycleTestProject/SuiteLifeCycleTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/SampleProjectForAssemblyResolution/SampleProjectForAssemblyResolution.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/ParallelTestMethods/ParallelMethodsTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/ParallelTestClass/ParallelClassesTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/OutputTestProject/OutputTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/LibProjectReferencedByDataSourceTest/LibProjectReferencedByDataSourceTest.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/HierarchyProject/HierarchyProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/FxExtensibilityTestProject/FxExtensibilityTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/FixturesTestProject/FixturesTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/DynamicDataTestProject/DynamicDataTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/DoNotParallelizeTestProject/DoNotParallelizeTestProject.csproj Removes legacy test-service metadata.
test/IntegrationTests/TestAssets/DiscoverInternalsProject/DiscoverInternalsProject.csproj Removes legacy test-service metadata.
test/IntegrationTests/TestAssets/DesktopTestProjectx86Release/DesktopTestProjectx86Release.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/DesktopTestProjectx86Debug/DesktopTestProjectx86Debug.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/DesktopTestProjectx64Release/DesktopTestProjectx64Release.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/DesktopTestProjectx64Debug/DesktopTestProjectx64Debug.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/DeploymentTestProject.PreserveNewest/DeploymentTestProject.PreserveNewest.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/DeploymentTestProject.Never/DeploymentTestProject.Never.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/DataSourceTestProject/DataSourceTestProject.csproj Removes legacy service metadata.
test/IntegrationTests/TestAssets/DataRowTestProject/DataRowTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/TestAssets/ClsTestProject/ClsTestProject.csproj Uses the repository minimum framework.
test/IntegrationTests/PlatformServices.Desktop.IntegrationTests/PlatformServices.Desktop.IntegrationTests.csproj Adds an explicit object-model dependency.
test/IntegrationTests/MSTest.Acceptance.IntegrationTests/TrimAndAotAssertions.cs Expands generated-file checks.
test/IntegrationTests/MSTest.Acceptance.IntegrationTests/TestDiscoveryTests.cs Updates discovery commentary.
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/ServerMode/v1.0.0/ClientCapabilities.cs Models stateful clients.
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/LocalizationTests.cs Re-enables localization tests.
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/LocalizationFailingTests.cs Re-enables localization failure tests.
src/TestFramework/TestFramework/PublicAPI/net9.0/PublicAPI.Unshipped.txt Moves RISC-V API tracking.
src/TestFramework/TestFramework/PublicAPI/net9.0/PublicAPI.Shipped.txt Marks RISC-V API shipped.
src/TestFramework/TestFramework/InternalAPI/net9.0/InternalAPI.Unshipped.txt Initializes internal API tracking.
src/TestFramework/TestFramework/InternalAPI/net9.0/InternalAPI.Shipped.txt Initializes internal API tracking.
src/TestFramework/TestFramework/InternalAPI/net/InternalAPI.Unshipped.txt Initializes internal API tracking.
src/TestFramework/TestFramework/InternalAPI/net/InternalAPI.Shipped.txt Initializes internal API tracking.
src/TestFramework/TestFramework/InternalAPI/InternalAPI.Unshipped.txt Initializes internal API tracking.
src/TestFramework/TestFramework/Attributes/Lifecycle/Initialization/GlobalTestInitializeAttribute.cs Updates timeout documentation.
src/TestFramework/TestFramework/Assertions/Assert.HasCount.cs Updates assertion telemetry commentary.
src/TestFramework/TestFramework.Extensions/TestFramework.Extensions.csproj Enables internal API analysis.
src/TestFramework/TestFramework.Extensions/TestContext.cs Uses safe property lookup.
src/TestFramework/TestFramework.Extensions/InternalAPI/uap10.0.16299/InternalAPI.Unshipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/uap10.0.16299/InternalAPI.Shipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/netstandard2.0/InternalAPI.Unshipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/netstandard2.0/InternalAPI.Shipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/net9.0/InternalAPI.Unshipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/net9.0/InternalAPI.Shipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/net9.0-windows10.0.17763.0/InternalAPI.Unshipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/net9.0-windows10.0.17763.0/InternalAPI.Shipped.txt Tracks compiler-generated APIs.
src/TestFramework/TestFramework.Extensions/InternalAPI/net8.0/InternalAPI.Unshipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/net8.0/InternalAPI.Shipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/net8.0-windows10.0.18362.0/InternalAPI.Unshipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/net8.0-windows10.0.18362.0/InternalAPI.Shipped.txt Tracks platform-specific APIs.
src/TestFramework/TestFramework.Extensions/InternalAPI/net462/InternalAPI.Unshipped.txt Initializes API tracking.
src/TestFramework/TestFramework.Extensions/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/SharedExtensionHelpers/TestNodeIdentity.cs Generalizes shared test identity.
src/Platform/SharedExtensionHelpers/TargetFrameworkMonikerHelper.cs Clarifies framework naming.
src/Platform/SharedExtensionHelpers/ReporterLoggingExtensions.cs Adds shared reporter logging.
src/Platform/Microsoft.Testing.Platform/Services/ShutdownProgressReporter.cs Handles single-threaded WASM.
src/Platform/Microsoft.Testing.Platform/Services/ServiceProviderExtensions.cs Exposes artifact naming.
src/Platform/Microsoft.Testing.Platform/Services/IClientInfo.cs Adds client capabilities.
src/Platform/Microsoft.Testing.Platform/Services/ClientInfoService.cs Stores client capabilities.
src/Platform/Microsoft.Testing.Platform/Services/ClientCapabilitiesService.cs Implements client capabilities.
src/Platform/Microsoft.Testing.Platform/ServerMode/JsonRpc/SerializerUtilities.Deserializers.cs Deserializes statefulness.
src/Platform/Microsoft.Testing.Platform/ServerMode/JsonRpc/RpcMessages.cs Extends the capability record.
src/Platform/Microsoft.Testing.Platform/ServerMode/JsonRpc/JsonRpcMethods.cs Adds the protocol key.
src/Platform/Microsoft.Testing.Platform/ServerMode/JsonRpc/Json/Json.Deserializers.cs Deserializes statefulness.
src/Platform/Microsoft.Testing.Platform/Resources/PlatformResources.resx Updates a logger error message.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.zh-Hant.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.zh-Hans.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.tr.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.ru.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.pt-BR.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.pl.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.ko.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.ja.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.it.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.fr.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.es.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.de.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/Resources/xlf/PlatformResources.cs.xlf Regenerates localization metadata.
src/Platform/Microsoft.Testing.Platform/OutputDevice/Terminal/TerminalTestReporterCommandLineOptionsProvider.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Platform/Messages/AsynchronousMessageBus.cs Uses inline WASM consumers.
src/Platform/Microsoft.Testing.Platform/InternalAPI/net/InternalAPI.Unshipped.txt Tracks shared serializer APIs.
src/Platform/Microsoft.Testing.Platform/Hosts/TestHostBuilder.CommonServices.cs Registers artifact naming.
src/Platform/Microsoft.Testing.Platform/Hosts/ServerTestHost.RequestExecution.cs Captures client statefulness.
src/Platform/Microsoft.Testing.Platform/Hosts/ServerTestHost.cs Suppresses unstable API tracking.
src/Platform/Microsoft.Testing.Platform/Hosts/ConsoleTestHost.cs Declares a stateless console client.
src/Platform/Microsoft.Testing.Platform/Extensions/IExtension.cs Documents stable extension UIDs.
src/Platform/Microsoft.Testing.Platform/Extensions/CompositeExtensionsFactory.cs Suppresses nondeterministic constant tracking.
src/Platform/Microsoft.Testing.Platform/CommandLine/PlatformCommandLineProvider.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Platform.MSBuild/Tasks/InvokeTestingPlatformTask.cs Adds execution-state fields.
src/Platform/Microsoft.Testing.Platform.AI/Microsoft.Testing.Platform.AI.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Platform.AI/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.VSTestBridge/Requests/VSTestRunTestExecutionRequestFactory.cs Propagates UID strategy.
src/Platform/Microsoft.Testing.Extensions.VSTestBridge/Requests/VSTestDiscoverTestExecutionRequestFactory.cs Propagates UID strategy.
src/Platform/Microsoft.Testing.Extensions.VSTestBridge/ObjectModel/RunContextAdapter.cs Supports configurable UID filtering.
src/Platform/Microsoft.Testing.Extensions.VSTestBridge/ObjectModel/DiscoveryContextAdapter.cs Supports configurable UID filtering.
src/Platform/Microsoft.Testing.Extensions.VSTestBridge/Microsoft.Testing.Extensions.VSTestBridge.csproj Links shared run-settings logic.
src/Platform/Microsoft.Testing.Extensions.VSTestBridge/CommandLine/TestRunParametersCommandLineOptionsProvider.cs Reuses shared validation.
src/Platform/Microsoft.Testing.Extensions.VSTestBridge/CommandLine/RunSettingsCommandLineOptionsProvider.cs Reuses shared file validation.
src/Platform/Microsoft.Testing.Extensions.VideoRecorder/VideoRecorderCommandLineProvider.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Extensions.VideoRecorder/Microsoft.Testing.Extensions.VideoRecorder.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.VideoRecorder/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.TrxReport/TrxCommandLine.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Extensions.TrxReport/Microsoft.Testing.Extensions.TrxReport.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.TrxReport/InternalAPI/InternalAPI.Unshipped.txt Tracks shared serializer APIs.
src/Platform/Microsoft.Testing.Extensions.TrxReport.Abstractions/Microsoft.Testing.Extensions.TrxReport.Abstractions.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.TrxReport.Abstractions/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.Telemetry/Microsoft.Testing.Extensions.Telemetry.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.Telemetry/InternalAPI/InternalAPI.Unshipped.txt Tracks channel API.
src/Platform/Microsoft.Testing.Extensions.Retry/RetryCommandLineOptionsProvider.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Extensions.Retry/Microsoft.Testing.Extensions.Retry.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.Retry/InternalAPI/InternalAPI.Unshipped.txt Tracks shared serializer APIs.
src/Platform/Microsoft.Testing.Extensions.PackagedApp/PublicAPI/PublicAPI.Unshipped.txt Moves APIs to shipped tracking.
src/Platform/Microsoft.Testing.Extensions.PackagedApp/PublicAPI/PublicAPI.Shipped.txt Marks APIs shipped.
src/Platform/Microsoft.Testing.Extensions.PackagedApp/Microsoft.Testing.Extensions.PackagedApp.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.PackagedApp/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.OpenTelemetry/Microsoft.Testing.Extensions.OpenTelemetry.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.OpenTelemetry/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/ExtensionResources.resx Adds the provider display name.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.zh-Hant.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.zh-Hans.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.tr.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.ru.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.pt-BR.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.pl.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.ko.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.ja.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.it.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.fr.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.es.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.de.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Resources/xlf/ExtensionResources.cs.xlf Adds localization metadata.
src/Platform/Microsoft.Testing.Extensions.MSBuild/MSBuildCommandLineProvider.cs Stabilizes identity and display name.
src/Platform/Microsoft.Testing.Extensions.MSBuild/Microsoft.Testing.Extensions.MSBuild.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.MSBuild/InternalAPI.Unshipped.txt Tracks shared serializer APIs.
src/Platform/Microsoft.Testing.Extensions.Logging/PublicAPI/PublicAPI.Unshipped.txt Moves APIs to shipped tracking.
src/Platform/Microsoft.Testing.Extensions.Logging/PublicAPI/PublicAPI.Shipped.txt Marks APIs shipped.
src/Platform/Microsoft.Testing.Extensions.Logging/Microsoft.Testing.Extensions.Logging.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.Logging/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.JUnitReport/PublicAPI/PublicAPI.Unshipped.txt Moves APIs to shipped tracking.
src/Platform/Microsoft.Testing.Extensions.JUnitReport/PublicAPI/PublicAPI.Shipped.txt Marks APIs shipped.
src/Platform/Microsoft.Testing.Extensions.JUnitReport/Microsoft.Testing.Extensions.JUnitReport.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.JUnitReport/JUnitReportGeneratorCommandLine.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Extensions.JUnitReport/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.HtmlReport/PublicAPI/PublicAPI.Unshipped.txt Moves APIs to shipped tracking.
src/Platform/Microsoft.Testing.Extensions.HtmlReport/PublicAPI/PublicAPI.Shipped.txt Marks APIs shipped.
src/Platform/Microsoft.Testing.Extensions.HtmlReport/Microsoft.Testing.Extensions.HtmlReport.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.HtmlReport/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.HtmlReport/HtmlReportGeneratorCommandLine.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Extensions.HotReload/Microsoft.Testing.Extensions.HotReload.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.HotReload/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.HangDump/Microsoft.Testing.Extensions.HangDump.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.HangDump/InternalAPI/InternalAPI.Unshipped.txt Tracks shared serializer APIs.
src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/TestingPlatformBuilderHook.cs Adds SDK registration hook.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/PublicAPI/PublicAPI.Unshipped.txt Initializes public API tracking.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/PublicAPI/PublicAPI.Shipped.txt Declares shipped public APIs.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/InternalAPI/InternalAPI.Unshipped.txt Initializes internal API tracking.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/GitHubActionsCommandLineOptions.cs Defines report options.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/buildTransitive/Microsoft.Testing.Extensions.GitHubActionsReport.props Adds transitive package import.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/buildMultiTargeting/Microsoft.Testing.Extensions.GitHubActionsReport.props Registers the builder hook.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/build/Microsoft.Testing.Extensions.GitHubActionsReport.props Adds package import forwarding.
src/Platform/Microsoft.Testing.Extensions.GitHubActionsReport/BannedSymbols.txt Establishes banned APIs.
src/Platform/Microsoft.Testing.Extensions.CtrfReport/PublicAPI/PublicAPI.Unshipped.txt Moves APIs to shipped tracking.
src/Platform/Microsoft.Testing.Extensions.CtrfReport/PublicAPI/PublicAPI.Shipped.txt Marks APIs shipped.
src/Platform/Microsoft.Testing.Extensions.CtrfReport/Microsoft.Testing.Extensions.CtrfReport.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.CtrfReport/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.CtrfReport/CtrfReportGeneratorCommandLine.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Extensions.CtrfReport/CtrfReportEngine.FileNaming.cs Uses platform-aware framework names.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Microsoft.Testing.Extensions.CrashDump.csproj Enables internal API analysis.
src/Platform/Microsoft.Testing.Extensions.CrashDump/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.CrashDump/CrashDumpCommandLineProvider.cs Pins a stable extension UID.
src/Platform/Microsoft.Testing.Extensions.AzureFoundry/Resources/ExtensionResources.resx Adds authentication guidance.
src/Platform/Microsoft.Testing.Extensions.AzureFoundry/PublicAPI/PublicAPI.Unshipped.txt Tracks credential overload.
src/Platform/Microsoft.Testing.Extensions.AzureFoundry/Microsoft.Testing.Extensions.AzureFoundry.csproj Adds Azure Core and API tracking.
src/Platform/Microsoft.Testing.Extensions.AzureFoundry/InternalAPI/InternalAPI.Unshipped.txt Tracks authentication internals.
src/Platform/Microsoft.Testing.Extensions.AzureDevOpsReport/InternalAPI/InternalAPI.Unshipped.txt Initializes API tracking.
src/Platform/Microsoft.Testing.Extensions.AzureDevOpsReport/AzureDevOpsTestResultsPublisher.Configuration.cs Uses platform-aware framework names.
src/Platform/Microsoft.Testing.Extensions.AzureDevOpsReport/AzureDevOpsCommandLineProvider.cs Pins a stable extension UID.
src/Platform/Directory.Build.props Computes the next platform major.
src/Package/MSTest.Sdk/Sdk/VSTest/VSTest.targets Rejects GitHub reporting under VSTest.
src/Package/MSTest.Sdk/Sdk/Sdk.targets Guards the base SDK import.
src/Analyzers/MSTest.SourceGeneration/Models/TestClassModel.cs Moves source-generation namespace.
src/Analyzers/MSTest.SourceGeneration/Helpers/MSTestAttributeNames.cs Moves source-generation namespace.
src/Analyzers/MSTest.SourceGeneration/Helpers/IndentedStringBuilder.cs Updates shared-generator documentation.
src/Analyzers/MSTest.SourceGeneration/Generators/TestClassModelBuilder.cs Moves generator implementation.
src/Analyzers/MSTest.SourceGeneration/Generators/RuntimeRegistrationEmitter.cs Moves and renames generated attribution.
src/Analyzers/MSTest.SourceGeneration/Generators/MSTestReflectionMetadataGenerator.cs Integrates the reflection-free generator.
src/Analyzers/MSTest.SourceGeneration/Diagnostics/LocationInfo.cs Moves diagnostics namespace.
src/Analyzers/MSTest.SourceGeneration/Diagnostics/DiagnosticInfo.cs Moves diagnostics namespace.
src/Analyzers/MSTest.SourceGeneration/Diagnostics/DiagnosticDescriptors.cs Moves diagnostics namespace.
src/Analyzers/MSTest.SourceGeneration/AnalyzerReleases.Unshipped.md Tracks source-generator diagnostics.
src/Analyzers/MSTest.AotReflection.SourceGeneration/Helpers/SystemPolyfills.cs Removes obsolete polyfill.
src/Analyzers/MSTest.AotReflection.SourceGeneration/AnalyzerReleases.Unshipped.md Removes obsolete release tracking.
src/Analyzers/MSTest.AotReflection.SourceGeneration/AnalyzerReleases.Shipped.md Removes obsolete release tracking.
src/Analyzers/MSTest.Analyzers/UseProperAssertMethodsAnalyzer.cs Recommends IsEmpty.
src/Analyzers/MSTest.Analyzers/Resources.resx Updates fixture-rule guidance.
src/Analyzers/MSTest.Analyzers/GlobalTestFixtureShouldBeValidAnalyzer.cs Lowers diagnostic severity.
src/Adapter/MSTestAdapter.PlatformServices/SourceGeneration/CompositeSourceGeneratedReflectionDataProvider.cs Accepts read-only dictionaries.
src/Adapter/MSTestAdapter.PlatformServices/ObjectModel/AdapterSettingsException.cs Documents settings failures.
src/Adapter/MSTestAdapter.PlatformServices/InternalAPI/InternalAPI.Unshipped.txt Tracks new adapter internals.
src/Adapter/MSTestAdapter.PlatformServices/Helpers/TestRunParameters.cs Removes object-model dependency.
src/Adapter/MSTestAdapter.PlatformServices/Helpers/ReflectHelper.cs Uses neutral traits.
src/Adapter/MSTestAdapter.PlatformServices/Execution/UnitTestRunner.TestFilter.cs Uses neutral logging.
src/Adapter/MSTestAdapter.PlatformServices/Execution/TestRunInfo.cs Uses neutral traits.
src/Adapter/MSTestAdapter.PlatformServices/Execution/TestMethodInfo.Execution.cs Uses cached parameter metadata.
src/Adapter/MSTestAdapter.PlatformServices/Execution/TestMethodInfo.cs Centralizes result output handling.
src/Adapter/MSTestAdapter.PlatformServices/Execution/TestMethodInfo.ArgumentResolution.cs Reuses cached parameters.
src/Adapter/MSTestAdapter.PlatformServices/Execution/ClassCleanupManager.cs Uses neutral logging.
src/Adapter/MSTestAdapter.PlatformServices/ApartmentStateSetting.cs Adds neutral apartment-state model.
src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/PlatformServicesConfigurationAdapter.cs Renames configuration adapter.
src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/MSTestTestNodeException.cs Adds native MTP failure exception.
src/Adapter/MSTest.TestAdapter/TestingPlatformAdapter/IMSTestTrxReportCapability.cs Adds native TRX capability.
src/Adapter/MSTest.TestAdapter/Services/MessageLevel.cs Bridges message levels.
src/Adapter/MSTest.TestAdapter/InternalAPI/uwp/InternalAPI.Unshipped.txt Initializes API tracking.
src/Adapter/MSTest.TestAdapter/InternalAPI/InternalAPI.Unshipped.txt Tracks adapter internals.
src/Adapter/MSTest.TestAdapter/Extensions/TestResultExtensions.cs Uses adapter-owned result properties.
samples/WasiPlayground/Program.cs Disables unsupported Azure reporting.
samples/public/global.json Updates the sample MSTest SDK.
MSTest.slnf Removes the retired generator project.
Microsoft.Testing.Platform.slnf Adds GitHub Actions reporting.
global.json Updates the repository .NET SDK.
eng/verify-nupkgs.ps1 Updates package-layout expectations.
docs/mstest-runner-protocol/001-protocol-intro.md Documents stateful clients.
Directory.Packages.props Updates central dependencies.
Directory.Build.props Adds GitHub report versioning.
azure-pipelines-official.yml Enables CI build behavior.
.github/workflows/weekly-issue-activity.md Shortens automated footer disclosure.
.github/workflows/unskip-closed-tests.md Shortens automated footer disclosure.
.github/workflows/test-improver.md Shortens automated footer disclosure.
.github/workflows/sub-issue-closer.md Shortens automated footer disclosure.
.github/workflows/shared/msbuild-review-shared.md Shortens automated footer disclosure.
.github/workflows/shared/grade-tests-shared.md Shortens automated footer disclosure.
.github/workflows/shared/address-review-shared.md Shortens automated footer disclosure.
.github/workflows/repository-quality-improver.md Shortens automated footer disclosure.
.github/workflows/pr-fix.md Shortens automated footer disclosure.
.github/workflows/perf-improver.md Shortens automated footer disclosure.
.github/workflows/markdown-linter.md Shortens automated footer disclosure.
.github/workflows/malicious-code-scan.md Shortens automated footer disclosure.
.github/workflows/link-checker.md Shortens automated footer disclosure.
.github/workflows/grade-tests.agent.md Shortens automated footer disclosure.
.github/workflows/grade-tests-on-pr.agent.md Shortens automated footer disclosure.
.github/workflows/glossary-maintainer.md Shortens automated footer disclosure.
.github/workflows/efficiency-improver.md Shortens automated footer disclosure.
.github/workflows/duplicate-code-detector.md Shortens automated footer disclosure.
.github/workflows/dependabot-pr-bundler.md Shortens automated footer disclosure.
.github/workflows/dependabot-issue-bundler.md Shortens automated footer disclosure.
.github/workflows/daily-file-diet.md Shortens automated footer disclosure.
.github/workflows/code-simplifier.md Shortens automated footer disclosure.
.github/workflows/build-failure-analysis.md Shortens automated footer disclosure.
.github/workflows/build-failure-analysis-command.md Shortens automated footer disclosure.
.github/workflows/autofix.agent.md Shortens automated footer disclosure.
.github/workflows/adhoc-qa.md Shortens automated footer disclosure.
.github/workflows/address-review.agent.md Shortens automated footer disclosure.
.github/workflows/add-tests.md Shortens automated footer disclosure.
.config/dotnet-tools.json Updates dotnet-coverage.

Review details

  • Files reviewed: 3/3 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread src/Package/MSTest.Sdk/Sdk/Runner/NativeAOT.targets
@Evangelink Evangelink added the state/needs-review Awaiting review from the team. label Jul 10, 2026
@Evangelink Evangelink marked this pull request as ready for review July 10, 2026 15:29

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Review Summary

Clean, well-scoped change. This is a targeted revert that pins MSTest.Sdk's NativeAOT wiring back to the classic MSTest.Engine + MSTest.SourceGeneration packages at a hardcoded version, since those packages are no longer built from this repo.

Findings

# Dimension Verdict
1 Algorithmic Correctness ✅ Clean
2 Threading & Concurrency N/A
3–22 All others ✅ Clean / N/A

One minor observation (non-blocking)

The hardcoded version 2.0.0-alpha.26264.3 in Sdk.props.template is a pragmatic choice given the constraints (no local build of these packages). The XML comment explains the rationale well. If a newer MSTest.Engine is published later, this will need a manual bump — but that's clearly intentional and the property is overridable by consumers via $(MSTestEngineVersion).

MSBuild correctness

  • The _TemplateProperties line correctly drops MSTestSourceGenerationVersion (no longer computed) and doesn't add MSTestEngineVersion (it's hardcoded in the template, not injected at build time). ✅
  • NativeAOT.targets correctly adds MSTest.Engine with the same CPM pattern used by neighboring references. ✅
  • The Sdk="MSTest" attribute on the new PackageReference is consistent with the existing items in the same ItemGroup. ✅

No blocking issues found.

Restore the MSTestEngineVersion property and re-add the MSTest.Engine package reference in the NativeAOT engine, referencing both MSTest.Engine and MSTest.SourceGeneration at that version (as in 4.2.3), while keeping the 4.3 packaging/CPM/SDK-layering improvements and report extensions.

Since MSTest.Engine and MSTest.SourceGeneration are no longer built from this repo, hardcode the version to the last co-published preview (2.0.0-alpha.26264.3) so consumer projects always resolve a real package instead of an unpublished -dev/-ci build.

Also drop the 4.3-only MSTest.TestAdapter reference and the EnableMSTestRunner/IsTestingPlatformApplication property group from the NativeAOT runner. Those were added for the new source generator; with the classic MSTest.Engine they caused a second test framework to be registered ('The test framework adapter factory has already been registered'). Restoring the 4.2 wiring (MSTest.Engine + MSTest.SourceGeneration only) fixes NativeAot_Smoke_Test, verified locally.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@Evangelink Evangelink force-pushed the dev/amauryleve/revert-mstestsdk-sourcegen branch from 35a40d3 to 5c9d54d Compare July 10, 2026 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-review Awaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants