Repository navigation
Upgrade DMT to .NET 10 LTS - #261
Merged
Merged
Conversation
Retarget all projects and profiles; align runtime packages, SDK and Ubuntu container pins. Resolve Cosmos Encryption constraints, preserve offline RBAC tests, and include Parquet tests in the solution. Add native six-RID and container smoke validation plus compatibility and servicing guidance. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Honor MSBuild platform-specific output paths in the shared action and verify the sidecar matches the actual executable bundle. Keep all six validation targets running for independent diagnostics. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the existing profile and configuration-specific net10.0 extension directory so contributor builds include PostgreSQL alongside the other extensions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Set contents: read at workflow scope so package builds and native/container smoke jobs have an explicit least-privilege token, addressing both CodeQL review threads. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The smoke-test comparisons can falsely pass changed records because they ignore case, coerce types, and do not require the nullable field, leaving serialization regressions undetected.
1 open issue
What changed in this PR
Upgrades DMT’s core, extensions, tests and packaging to .NET 10 LTS as the implementation portion of #258. Publication approval and rollout verification remain separate.
Changes:
- Retargets projects and publish profiles, pins the SDK/runtime, and aligns dependencies.
- Updates CI and Docker, adds native package/container smoke checks, and includes Parquet tests in the solution.
- Preserves offline authentication testing, migrates certificate loading, and documents compatibility and servicing requirements.
| File | Description |
|---|---|
| resources/json-to-sql/README.md | Adds runtime and source-build prerequisites. |
| README.md | Updates installation, build and extension guidance. |
| Interfaces/Cosmos.DataTransfer.Interfaces/Cosmos.DataTransfer.Interfaces.csproj | Targets shared interfaces to .NET 10. |
| Interfaces/Cosmos.DataTransfer.Common/Cosmos.DataTransfer.Common.csproj | Targets shared utilities to .NET 10. |
| Interfaces/Cosmos.DataTransfer.Common.UnitTests/FileDataSourceTests.cs | Adapts async LINQ and passes cancellation. |
| Interfaces/Cosmos.DataTransfer.Common.UnitTests/Cosmos.DataTransfer.Common.UnitTests.csproj | Retargets common tests. |
| global.json | Pins stable SDK selection. |
| Extensions/SqlServer/Cosmos.DataTransfer.SqlServerExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates publish targets and paths. |
| Extensions/SqlServer/Cosmos.DataTransfer.SqlServerExtension/Cosmos.DataTransfer.SqlServerExtension.csproj | Retargets SQL Server; removes explicit JSON dependency. |
| Extensions/SqlServer/Cosmos.DataTransfer.SqlServerExtension.UnitTests/Cosmos.DataTransfer.SqlServerExtension.UnitTests.csproj | Retargets SQL Server tests. |
| Extensions/PostgreSQL/Properties/PublishProfiles/FolderProfile.pubxml | Updates framework and respects build configuration. |
| Extensions/PostgreSQL/Cosmos.DataTransfer.PostgresqlExtension.csproj | Retargets PostgreSQL and corrects profile selection. |
| Extensions/Parquet/Cosmos.DataTransfer.ParquetExtension/Properties/PublishProfiles/FolderProfile.pubxml | Corrects configuration-aware publish settings. |
| Extensions/Parquet/Cosmos.DataTransfer.ParquetExtension/Cosmos.DataTransfer.ParquetExtension.csproj | Retargets Parquet and corrects profile selection. |
| Extensions/Parquet/Cosmos.DataTransfer.ParquetExtension.UnitTests/Cosmos.DataTransfer.ParquetExtension.UnitTests.csproj | Retargets Parquet tests. |
| Extensions/Mongo/Cosmos.DataTransfer.MongoVectorExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates publish targets and paths. |
| Extensions/Mongo/Cosmos.DataTransfer.MongoVectorExtension/Cosmos.DataTransfer.MongoVectorExtension.csproj | Retargets Vector; removes explicit JSON dependency. |
| Extensions/Mongo/Cosmos.DataTransfer.MongoLegacyExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates legacy publish framework and path. |
| Extensions/Mongo/Cosmos.DataTransfer.MongoLegacyExtension/Cosmos.DataTransfer.MongoLegacyExtension.csproj | Retargets legacy MongoDB. |
| Extensions/Mongo/Cosmos.DataTransfer.MongoExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates publish targets and paths. |
| Extensions/Mongo/Cosmos.DataTransfer.MongoExtension/Cosmos.DataTransfer.MongoExtension.csproj | Retargets MongoDB. |
| Extensions/Mongo/Cosmos.DataTransfer.MongoExtension.UnitTests/Cosmos.DataTransfer.MongoExtension.UnitTests.csproj | Retargets MongoDB tests. |
| Extensions/Json/Cosmos.DataTransfer.JsonExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates publish targets and paths. |
| Extensions/Json/Cosmos.DataTransfer.JsonExtension/JsonFormatReader.cs | Removes version-specific wording from a comment. |
| Extensions/Json/Cosmos.DataTransfer.JsonExtension/JsonArrayReader.cs | Updates serializer implementation comments. |
| Extensions/Json/Cosmos.DataTransfer.JsonExtension/Cosmos.DataTransfer.JsonExtension.csproj | Retargets JSON; removes explicit JSON dependency. |
| Extensions/Json/Cosmos.DataTransfer.JsonExtension.UnitTests/Cosmos.DataTransfer.JsonExtension.UnitTests.csproj | Retargets JSON tests. |
| Extensions/Csv/Cosmos.DataTransfer.CsvExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates publish targets and paths. |
| Extensions/Csv/Cosmos.DataTransfer.CsvExtension/Cosmos.DataTransfer.CsvExtension.csproj | Retargets CSV; removes explicit JSON dependency. |
| Extensions/Csv/Cosmos.DataTransfer.CsvExtension.UnitTests/Cosmos.DataTransfer.CsvExtension.UnitTests.csproj | Retargets CSV tests. |
| Extensions/Cosmos/README.md | Makes delay-limit documentation version-neutral. |
| Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates publish targets and paths. |
| Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension/CosmosExtensionServices.cs | Migrates certificate loading and disposes rejected certificates. |
| Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension/CosmosDataSinkExtension.cs | Makes the delay-limit comment version-neutral. |
| Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension/Cosmos.DataTransfer.CosmosExtension.csproj | Retargets Cosmos; removes explicit JSON dependency. |
| Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension.UnitTests/CosmosSinkSettingsTests.cs | Adds partition-key configuration binding tests. |
| Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension.UnitTests/CosmosMultiAccountSupportTests.cs | Injects offline credentials into RBAC clients. |
| Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension.UnitTests/CosmosHttpClientLifecycleTests.cs | Migrates test certificate loading. |
| Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension.UnitTests/Cosmos.DataTransfer.CosmosExtension.UnitTests.csproj | Retargets Cosmos tests. |
| Extensions/CognitiveSearch/Cosmos.DataTransfer.CognitiveSearchExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates publish targets and paths. |
| Extensions/CognitiveSearch/Cosmos.DataTransfer.CognitiveSearchExtension/Cosmos.DataTransfer.CognitiveSearchExtension.csproj | Retargets search; removes explicit JSON dependency. |
| Extensions/CognitiveSearch/Cosmos.DataTransfer.CognitiveSearchExtension.UnitTests/Cosmos.DataTransfer.CognitiveSearchExtension.UnitTests.csproj | Retargets search tests and removes JSON reference. |
| Extensions/AzureTableAPI/Cosmos.DataTransfer.AzureTableAPIExtension/Properties/PublishProfiles/PublishToExtensionsFolder.pubxml | Updates publish targets and paths. |
| Extensions/AzureTableAPI/Cosmos.DataTransfer.AzureTableAPIExtension/Cosmos.DataTransfer.AzureTableAPIExtension.csproj | Retargets Azure Table; removes JSON reference. |
| Extensions/AzureTableAPI/Cosmos.DataTransfer.AzureTableAPIExtension.UnitTests/Cosmos.DataTransfer.AzureTableAPIExtension.UnitTests.csproj | Retargets Azure Table tests and removes JSON reference. |
| Extensions/AzureBlob/Cosmos.DataTransfer.AzureBlobStorage/Cosmos.DataTransfer.AzureBlobStorage.csproj | Retargets Blob storage and removes JSON reference. |
| Extensions/AwsS3/Cosmos.DataTransfer.AwsS3Storage/Cosmos.DataTransfer.AwsS3Storage.csproj | Retargets S3 storage. |
| docs/runtime-support.md | Documents platforms, compatibility, servicing and release gates. |
| Dockerfile | Pins .NET 10 Noble images and retains runtime metadata. |
| Directory.Packages.props | Aligns framework, Cosmos and async LINQ dependencies. |
| Directory.Build.props | Pins the bundled runtime version. |
| CosmosDbDataMigrationTool.sln | Includes Parquet tests in solution builds. |
| Core/Cosmos.DataTransfer.Core/Cosmos.DataTransfer.Core.csproj | Retargets the host and removes JSON reference. |
| Core/Cosmos.DataTransfer.Core.UnitTests/Cosmos.DataTransfer.Core.UnitTests.csproj | Retargets host tests and removes JSON reference. |
| Contributing.md | Adds pinned-SDK and offline-test guidance. |
| .github/workflows/validate.yml | Uses the pinned .NET 10 SDK image. |
| .github/workflows/release.yml | Updates the release build SDK image. |
| .github/workflows/linux-cosmos-emulator-test.yml | Uses SDK pins and watches SDK configuration changes. |
| .github/workflows/internal-test-build.yml | Adds six native smoke jobs and Docker validation. |
| .github/workflows/dotnet-build-test.yml | Aligns SDK selection, archives TRX results and updates paths. |
| .github/workflows/deploy_tool_nupkg.yml | Aligns retained tool-packaging SDK and paths. |
| .github/workflows/cosmos_db_emulator.yml | Uses the pinned SDK for Windows emulator tests. |
| .github/scripts/Test-PublishedApp.ps1 | Checks runtime metadata, extension discovery and JSON transfers. |
| .github/actions/build-with-plugins/action.yml | Reports SDK selection and retains package runtime metadata. |
Review effort: Balanced
Compare complete JSON trees without PowerShell coercion, explicitly enable null-field preservation in the fixture, and run positive/negative assertion regressions on every native smoke platform. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Relates to #258. Do not close that issue on merge: approved publication and rollout verification remain separate completion criteria.
net10.0; pin stable SDK 10.0.403 and bundled runtime 10.0.14.nobleimages and preserve full-SHA action pins.Validation
The following completed on head 8e60578 before opening this PR:
Downloaded TRX results were inspected and independently checked with the repository guards. Local Windows suite: 1,354 passed, eight unconfigured integration skips. Published Windows discovery/migration and isolated matching-version Legacy/Vector Mongo discovery also passed. No live developer Azure credentials were used.
Outstanding risks and rollout gates
These are not silently accepted or suppressed:
Issue #258 artifact 1 contains the full implementation handoff, baseline dependency comparison and proposed servicing/release notes.
docs/runtime-support.mdrecords ongoing requirements.