From bbbe411d1895ab2e24f9fd408ff5eb16248788a7 Mon Sep 17 00:00:00 2001
From: Paul Medynski <31868385+paulmedynski@users.noreply.github.com>
Date: Wed, 8 Apr 2026 16:04:28 -0300
Subject: [PATCH 1/5] Task 43695: Use dotnet CLI exclusively
- Removed use of MSBuild in pipelines and documentation.
- Legacy build.proj still uses it, and will be replaced shortly by build2.proj which uses the dotnet CLI exclusively.
---
.github/copilot-instructions.md | 4 +-
.../ado-pipelines.instructions.md | 2 +-
.../instructions/architecture.instructions.md | 2 +-
.github/instructions/testing.instructions.md | 23 ++---
.../apicompat-ref-assembly-validation.md | 4 +-
BUILDGUIDE.md | 87 +++++++++++--------
doc/apps/AzureAuthentication/README.md | 2 +-
.../templates/jobs/ci-build-nugets-job.yml | 10 ++-
8 files changed, 77 insertions(+), 57 deletions(-)
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index 0c78f461cb..22330226e0 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -34,7 +34,7 @@ This project includes several key products and libraries that facilitate SQL Ser
## 🛠️ Key Features
- **Connectivity to SQL Server**: Provides robust and secure connections to SQL Server databases, using various authentication methods, such as Windows Authentication, SQL Server Authentication, and Entra ID authentication, e.g. `ActiveDirectoryIntegrated`, `ActiveDirectoryPassword`, `ActiveDirectoryServicePrincipal`,`ActiveDirectoryInteractive`, `ActiveDirectoryDefault`, and `ActiveDirectoryManagedIdentity`.
- **Connection Resiliency**: Implements connection resiliency features to handle transient faults and network issues, ensuring reliable database connectivity.
-- **TLS Encryption**: Supports secure connections using TLS protocols to encrypt data in transit. Supports TLS 1.2 and higher, ensuring secure communication with SQL Server. Supported encryption modes are:
+- **TLS Encryption**: Supports secure connections using TLS protocols to encrypt data in transit. Supports TLS 1.2 and higher, ensuring secure communication with SQL Server. Supported encryption modes are:
- **Optional**: Encryption is used if available, but not required.
- **Mandatory**: Encryption is mandatory for the connection.
- **Strict**: Enforces strict TLS requirements, ensuring only secure connections are established.
@@ -123,7 +123,7 @@ When a new issue is created, follow these steps:
- Ensure the PR passes all CI checks before merging.
### ✅ Closing Issues
-- Add a comment summarizing the fix and referencing the PR
+- Add a comment summarizing the fix and referencing the PR
### ⚙️ Automating Workflows
- Auto-label PRs based on folder paths (e.g., changes in `src/Microsoft.Data.SqlClient/src/` → `Area\SqlClient`, changes in `tests/` → `Area\Testing`) and whether they add new public APIs or introduce a breaking change.
diff --git a/.github/instructions/ado-pipelines.instructions.md b/.github/instructions/ado-pipelines.instructions.md
index 5dfd35a12c..9260a78b3d 100644
--- a/.github/instructions/ado-pipelines.instructions.md
+++ b/.github/instructions/ado-pipelines.instructions.md
@@ -49,7 +49,7 @@ Key parameters:
- `runAlwaysEncryptedTests` — include AE test set; default `true`
- `runLegacySqlTests` — include SQL Server 2016/2017 manual-test legs; default `true`
- `debug` — enable debug output; default `false`
-- `dotnetVerbosity` — MSBuild verbosity; default `normal`
+- `dotnetVerbosity` — build verbosity; default `normal`
## Build Stage Order
diff --git a/.github/instructions/architecture.instructions.md b/.github/instructions/architecture.instructions.md
index e1578592fe..2fd30c9f55 100644
--- a/.github/instructions/architecture.instructions.md
+++ b/.github/instructions/architecture.instructions.md
@@ -49,7 +49,7 @@ The `netcore/` and `netfx/` directories are legacy artifacts from the old dual-p
- `netcore/ref/` and `netfx/ref/` — **STILL ACTIVE**. Reference assemblies remain in these directories and define the public API surface for each target framework.
### OS Targeting with `TargetOs`
-The unified project uses a `TargetOs` MSBuild property to handle OS-specific compilation:
+The unified project uses a `TargetOs` build property to handle OS-specific compilation:
```xml
diff --git a/.github/instructions/testing.instructions.md b/.github/instructions/testing.instructions.md
index b5e7d28479..7c2c4a23bd 100644
--- a/.github/instructions/testing.instructions.md
+++ b/.github/instructions/testing.instructions.md
@@ -115,7 +115,7 @@ The default test filter is defined in `build.proj` via `TestFilters`:
```xml
category!=failing&category!=flaky&category!=interactive
```
-This can be overridden via MSBuild property: `msbuild build.proj -t:TestSqlClientUnit -p:TestFilters="your_filter"`.
+This can be overridden via build property: `dotnet build build.proj -t:TestSqlClientUnit -p:FilterStatement="your_filter"`.
### Test Attributes
```csharp
@@ -139,19 +139,19 @@ public void TestIntermittentlyFails() { ... }
## Running Tests
-### Using MSBuild (Recommended)
+### Using `dotnet build` (Recommended)
```bash
# Build and run all unit tests
-msbuild build.proj -t:TestSqlClientUnit
+dotnet build build.proj -t:TestSqlClientUnit
# Run functional tests only
-msbuild build.proj -t:TestSqlClientFunctional
+dotnet build build.proj -t:TestSqlClientFunctional
# Run manual tests for specific framework
-msbuild build.proj -t:TestSqlClientManual -p:TestFramework=net8.0
+dotnet build build.proj -t:TestSqlClientManual -p:TestFramework=net8.0
# Run specific test set
-msbuild build.proj -t:TestSqlClientManual -p:TestSet=1
+dotnet build build.proj -t:TestSqlClientManual -p:TestSet=1
```
### Using dotnet CLI
@@ -325,7 +325,7 @@ AssertExtensions.ThrowsContains(() => action(), "expected message"
### Running with Coverage
```bash
-msbuild build.proj -t:TestSqlClientUnit -p:TestCodeCoverage=true
+dotnet build build.proj -t:TestSqlClientUnit -p:TestCodeCoverage=true
```
### Coverage Targets
@@ -335,16 +335,11 @@ msbuild build.proj -t:TestSqlClientUnit -p:TestCodeCoverage=true
## Debugging Tests
-### Visual Studio
+### IDE
1. Set breakpoints in test code
-2. Right-click test → Debug Test
+2. Right-click test → Debug Test (or use CodeLens "Debug Test" link)
3. Use Test Explorer for navigation
-### VS Code
-1. Configure C# extension
-2. Use CodeLens "Debug Test" link
-3. Attach to test process
-
### Command Line
```bash
# Enable verbose output
diff --git a/.github/plans/apicompat-ref-assembly-validation.md b/.github/plans/apicompat-ref-assembly-validation.md
index b968dbf678..6bad02e27d 100644
--- a/.github/plans/apicompat-ref-assembly-validation.md
+++ b/.github/plans/apicompat-ref-assembly-validation.md
@@ -9,7 +9,7 @@ The comparison uses `Microsoft.DotNet.ApiCompat.Tool` in **strict mode**, which
## Usage
```
-dotnet msbuild build.proj /t:CompareRefAssemblies /p:BaselinePackageVersion=6.1.4
+dotnet build build.proj /t:CompareRefAssemblies /p:BaselinePackageVersion=6.1.4
```
- `BaselinePackageVersion` is **required** (no default). The user must specify which published package to compare against.
@@ -111,7 +111,7 @@ Add one line after the existing `.targets` imports (after line 7):
## Verification
```
-dotnet msbuild build.proj /t:CompareRefAssemblies /p:BaselinePackageVersion=6.1.4
+dotnet build build.proj /t:CompareRefAssemblies /p:BaselinePackageVersion=6.1.4
```
- Downloads 6.1.4 nupkg, builds both ref project variants, runs 8 comparisons (4 TFMs × 2 variants).
diff --git a/BUILDGUIDE.md b/BUILDGUIDE.md
index 7c8e4acb93..488943befc 100644
--- a/BUILDGUIDE.md
+++ b/BUILDGUIDE.md
@@ -6,6 +6,7 @@ contained within this repository.
## Prerequisites
### .NET SDK
+
Projects in this repository require the .NET SDK to be installed in order to build. For the exact version required for
building the current version, see [global.json](global.json). Downloads for .NET SDK can be found at:
https://dotnet.microsoft.com/en-us/download/dotnet
@@ -16,9 +17,11 @@ on operating systems that do not support .NET Framework. As such, it is not nece
### Miscellaneous
-**Powershell** is required to run several miscellaneous tasks as part of building and packaging. On Windows systems,
-no action is required. On Linux and MacOS systems, the `pwsh` command is required to be in the `$PATH` environment
-variable. For specific instructions see: [Install PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/install-powershell)
+**Powershell** is required to run several miscellaneous tasks as part of building and packaging. On
+Windows systems, either the built-in `powershell.exe` will be used, or if installed, the modern
+`pwsh` will be used. On Linux and MacOS systems, the `pwsh` command is required to be in the `$PATH`
+environment variable. For specific instructions see: [Install
+PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/install-powershell)
The **NuGet** binary is required to package the Microsoft.Data.SqlClient project. For convenience, this can be be done
via the PowerShell script [tools/scripts/downloadLatestNuget.ps1](tools/scripts/downloadLatestNuget.ps1), however, any
@@ -45,12 +48,22 @@ package the project. The `build.proj` file provides convenient targets to accomp
### Building Projects
-From the root of your repository, run `msbuild` against `build.proj` with a build target, following this pattern:
+From the root of your repository, run `dotnet build` against `build.proj` with a build target, following this pattern:
+
+```bash
+dotnet build build.proj -t: [optional_parameters]
+```
+
+Since `build.proj` is the only project file in the repo root, it can be omitted when building from
+the root:
```bash
-msbuild build.proj -t: [optional_parameters]
+dotnet build -t: [optional_parameters]
```
+The command-line examples below will assume that `build.proj` is selected by default and will omit
+it from the `dotnet build` command.
+
The following build targets can be used to build the following projects. All targets will implicitly build any other
projects they depend on.
@@ -87,17 +100,17 @@ placed in `artifacts/Microsoft.Data.SqlClient.ref/Project-/`
Build all projects:
```bash
-msbuild build.proj -t:Build
+dotnet build -t:Build
```
Build Microsoft.Data.SqlClient in Release configuration:
```bash
-msbuild build.proj -t:BuildSqlClient -p:Configuration=Release
+dotnet build -t:BuildSqlClient -p:Configuration=Release
```
Build v1.2.3 of Microsoft.Data.SqlClient.Extensions.Abstractions:
```bash
-msbuild build.proj -t:BuildAbstractions -p:PackageVersion=1.2.3
+dotnet build -t:BuildAbstractions -p:PackageVersion=1.2.3
```
### Testing Projects
@@ -105,10 +118,10 @@ msbuild build.proj -t:BuildAbstractions -p:PackageVersion=1.2.3
This section provides a summary and brief example of how to execute tests for projects in this repository. **For more
information about test procedures, including config file setup, see [TESTGUIDE.md](TESTGUIDE.md).**
-From the root of your repository, run `msbuild` against `build.proj` with a test target, following this pattern:
+From the root of your repository, run `dotnet build` against `build.proj` with a test target, following this pattern:
```bash
-msbuild build.proj -t: [optional_parameters]
+dotnet build -t: [optional_parameters]
```
| `` | Description |
@@ -140,37 +153,37 @@ A selection of parameters for test targets in `build.proj` relevant to common de
Run Microsoft.Data.SqlClient unit tests:
```bash
-msbuild build.proj -t:TestSqlClientUnit
+dotnet build -t:TestSqlClientUnit
```
Run Microsoft.Data.SqlClient manual test set 2:
```bash
-msbuild build.proj -t:TestSqlClientManual -p:TestSet=2
+dotnet build -t:TestSqlClientManual -p:TestSet=2
```
Run Microsoft.Data.SqlClient functional tests against x86 dotnet:
```bash
-msbuild build.proj -t:TestSqlClientFunctional -p:DotnetPath='C:\path\to\dotnet\x86\'
+dotnet build -t:TestSqlClientFunctional -p:DotnetPath='C:\path\to\dotnet\x86\'
```
Run all Microsoft.Data.SqlClient.Extensions.Azure unit tests, including interactive, but excluding failing tests:
```bash
-msbuild build.proj -t:TestAzure -p:TestFilters=category!=failing
+dotnet build -t:TestAzure -p:TestFilters=category!=failing
```
Run Microsoft.Data.SqlClient functional tests against net8.0 runtime:
```bash
-msbuild build.proj -t:TestSqlClientFunctional -p:TestFramework=net8.0
+dotnet build -t:TestSqlClientFunctional -p:TestFramework=net8.0
```
### Packaging Projects
-Just like bulding and testing the various projects in this repository, packaging the projects into NuGet packages is
-also handle by `build.proj`. From the root of your repository, run `msbuild` against `build.proj` with a test target,
+Just like building and testing the various projects in this repository, packaging the projects into NuGet packages is
+also handled by `build.proj`. From the root of your repository, run `dotnet build` against `build.proj` with a test target,
following this pattern:
```bash
-msbuild build.proj -t: [optional_parameters]
+dotnet build -t: [optional_parameters]
```
| `` | Desription |
@@ -198,23 +211,27 @@ A selection of parameters for pack targets in `build.proj` relevant to common de
#### Examples
Package Microsoft.Data.SqlClient.Internal.Logging into a NuGet package:
+
```bash
-msbuild build.proj -t:PackLogging
+dotnet build -t:PackLogging
```
Package Microsoft.Data.SqlClient if `nuget.exe` is not in the `$PATH` environment variable:
+
```bash
-msbuild build.proj -t:PackSqlClient -p:NugetPath="C:\my\nuget.exe"
+dotnet build -t:PackSqlClient -p:NugetPath="C:\my\nuget.exe"
```
Package version 1.2.3 of Microsoft.Data.SqlClient.Extensions.Abstractions:
+
```bash
-msbuild build.proj -t:PackAbstractions -p:PackageVersionAbstractions=1.2.3
+dotnet build -t:PackAbstractions -p:PackageVersionAbstractions=1.2.3
```
Package version Microsoft.Data.SqlClient.Extensions.Azure without building it beforehand:
+
```bash
-msbuild build.proj -t:PackAzure -p:PackBuild=false
+dotnet build -t:PackAzure -p:PackBuild=false
```
## Versioning
@@ -274,21 +291,28 @@ run subsequent `build.proj` targets against them.
Build Microsoft.Data.SqlClient version 7.1.1 that references Microsoft.Data.SqlClient.Extensions.Abstractions v1.0.1
and Microsoft.Data.SqlClient.Internal.Logging v2.2.2.
+Build v2.2.2 of Logging and copy to packages:
+
```bash
-# Build v2.2.2 of Logging and copy to packages
-msbuild build.proj -t:PackLogging \
+dotnet build -t:PackLogging \
-p:ReferenceType=Package \
-p:PackageVersionLogging=2.2.2
cp artifacts/Microsoft.Data.SqlClient.Internal.Logging/Debug/*.*pkg packages/
+```
-# Build v1.0.1 of Abstractions that depends on v2.2.2 of Logging
-msbuild build.proj -t:PackAbstractions \
+Build v1.0.1 of Abstractions that depends on v2.2.2 of Logging:
+
+```bash
+dotnet build -t:PackAbstractions \
-p:ReferenceType=Package \
-p:PackageVersionAbstractions=1.0.1 \
-p:PackageVersionLogging=2.2.2 \
cp artifacts/Microsoft.Data.SqlClient.Extensions.Abstractions/Package-Debug/*.*pkg packages/
+```
-# Build SqlClient
+Build SqlClient:
+
+```bash
msbuild -t:PackSqlClient \
-p:ReferenceType=Package \
-p:PackageVersionSqlClient=7.1.1 \
@@ -298,22 +322,17 @@ cp artifacts/Microsoft.Data.SqlClient/Package-Debug/*.*pkg packages/
```
Run Microsoft.Data.SqlClient functional tests against the versions build above:
+
```bash
-msbuild build.proj -t:TestSqlClientFunctional \
+dotnet build -t:TestSqlClientFunctional \
-p:ReferenceType=Package \
-p:PackageVersionSqlClient=7.1.1 \
-p:PackageVersionAbstractions=1.0.1 \
-p:PackageVersionLogging=2.2.2
```
-----
-
-
Manual test prerequisites and configuration are covered in [TESTGUIDE.md](TESTGUIDE.md#manual-test-prerequisites).
-
----
-
## Using Managed SNI on Windows
Managed SNI can be enabled on Windows by enabling the below AppContext switch:
diff --git a/doc/apps/AzureAuthentication/README.md b/doc/apps/AzureAuthentication/README.md
index a0d9d8b7ba..967a728007 100644
--- a/doc/apps/AzureAuthentication/README.md
+++ b/doc/apps/AzureAuthentication/README.md
@@ -28,7 +28,7 @@ The app is designed to run against both **published NuGet packages** and **local
## Build Parameters
-Package versions are controlled through MSBuild properties. Pass them on the command line with `-p:`
+Package versions are controlled through build properties. Pass them on the command line with `-p:`
(or `/p:`) to override the defaults defined in `Directory.Packages.props`.
| Property | Default | Description |
diff --git a/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml b/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
index afb20ac80e..33020e6901 100644
--- a/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
+++ b/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
@@ -85,7 +85,6 @@ jobs:
name: ${{parameters.poolName }}
demands:
- imageOverride -equals ${{ parameters.imageOverride }}
- - msbuild
variables:
- template: /eng/pipelines/libraries/ci-build-variables.yml@self
@@ -184,7 +183,14 @@ jobs:
configurationToPack: ${{ parameters.buildConfiguration }}
nobuild: true
packDirectory: $(packagePath)
- buildProperties: ReferenceType=${{ parameters.referenceType }};AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }};LoggingPackageVersion=${{ parameters.loggingPackageVersion }};SqlClientPackageVersion=${{ parameters.mdsPackageVersion }};AkvProviderPackageVersion=${{ parameters.akvPackageVersion }};BuildNumber=$(Build.BuildNumber);AssemblyBuildNumber=$(assemblyBuildNumber)
+ buildProperties: >-
+ ReferenceType=${{ parameters.referenceType }};
+ AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }};
+ LoggingPackageVersion=${{ parameters.loggingPackageVersion }};
+ SqlClientPackageVersion=${{ parameters.mdsPackageVersion }};
+ AkvProviderPackageVersion=${{ parameters.akvPackageVersion }};
+ BuildNumber=$(Build.BuildNumber);
+ AssemblyBuildNumber=$(assemblyBuildNumber)
- task: PublishPipelineArtifact@1
displayName: 'Publish Pipeline Artifacts'
From cdb098bbe9424c79b69d3fa8d8cc23967b3aa91e Mon Sep 17 00:00:00 2001
From: Paul Medynski <31868385+paulmedynski@users.noreply.github.com>
Date: Mon, 27 Apr 2026 09:22:24 -0300
Subject: [PATCH 2/5] Task 43695: Use dotnet CLI exclusively
- Rebased to the latest build.proj and updated everything to use dotnet CLI.
---
TESTGUIDE.md | 46 +++---
build.proj | 2 +-
.../templates/steps/ci-project-build-step.yml | 28 ++--
.../templates/steps/run-all-tests-step.yml | 143 +++++++-----------
.../jobs/test-abstractions-package-ci-job.yml | 2 +-
.../jobs/test-azure-package-ci-job.yml | 2 +-
.../onebranch/steps/build-buildproj-step.yml | 9 +-
.../onebranch/steps/pack-buildproj-step.yml | 9 +-
.../steps/roslyn-analyzers-buildproj-step.yml | 5 +-
eng/pipelines/stress/stress-tests-job.yml | 2 +-
tools/targets/CompareMdsRefAssemblies.targets | 8 +-
11 files changed, 115 insertions(+), 141 deletions(-)
diff --git a/TESTGUIDE.md b/TESTGUIDE.md
index fdcb8749ec..cb5b8cd25c 100644
--- a/TESTGUIDE.md
+++ b/TESTGUIDE.md
@@ -23,15 +23,19 @@ These projects target `net8.0`, `net9.0`, and `net10.0` on all platforms. On Win
Use [build.proj](build.proj) from the repository root:
```bash
-msbuild build.proj -t: [optional_parameters]
+dotnet build build.proj -t: [optional_parameters]
```
-If `msbuild` is not available, use `dotnet msbuild`:
+Since `build.proj` is the only project file in the repo root, it can be omitted when building from
+the root:
```bash
-dotnet msbuild build.proj -t: [optional_parameters]
+dotnet build -t: [optional_parameters]
```
+The command-line examples below will assume that `build.proj` is selected by default and will omit
+it from the `dotnet build` command.
+
Test targets build the projects they depend on, so a separate build step is not required for normal test runs.
## Test Targets
@@ -51,55 +55,55 @@ Test targets build the projects they depend on, so a separate build step is not
Run the SqlClient unit tests:
```bash
-msbuild build.proj -t:TestSqlClientUnit
+dotnet build -t:TestSqlClientUnit
```
Run the SqlClient functional tests:
```bash
-msbuild build.proj -t:TestSqlClientFunctional
+dotnet build -t:TestSqlClientFunctional
```
Run the SqlClient manual tests:
```bash
-msbuild build.proj -t:TestSqlClientManual
+dotnet build -t:TestSqlClientManual
```
Run only manual test set 2:
```bash
-msbuild build.proj -t:TestSqlClientManual -p:TestSet=2
+dotnet build -t:TestSqlClientManual -p:TestSet=2
```
Run manual test sets 1 and 3:
```bash
-msbuild build.proj -t:TestSqlClientManual -p:TestSet=13
+dotnet build -t:TestSqlClientManual -p:TestSet=13
```
Run Always Encrypted manual tests:
```bash
-msbuild build.proj -t:TestSqlClientManual -p:TestSet=AE
+dotnet build -t:TestSqlClientManual -p:TestSet=AE
```
Run a specific target framework:
```bash
-msbuild build.proj -t:TestSqlClientFunctional -p:TestFramework=net8.0
+dotnet build -t:TestSqlClientFunctional -p:TestFramework=net8.0
```
Run functional tests against an x86 `dotnet` installation:
```bash
-msbuild build.proj -t:TestSqlClientFunctional -p:DotnetPath='C:\path\to\dotnet\x86\'
+dotnet build -t:TestSqlClientFunctional -p:DotnetPath='C:\path\to\dotnet\x86\'
```
Run all Azure extension tests, including `interactive` tests, while still excluding tests marked `failing` or `flaky`:
```bash
-msbuild build.proj -t:TestAzure -p:TestFilters=category!=failing
+dotnet build -t:TestAzure -p:TestFilters=category!=failing
```
## Test Parameters
@@ -132,13 +136,13 @@ Examples:
```bash
# Run a single test by fully-qualified name.
-msbuild build.proj -t:TestSqlClientUnit -p:TestFilters=FullyQualifiedName=Namespace.ClassName.MethodName
+dotnet build -t:TestSqlClientUnit -p:TestFilters=FullyQualifiedName=Namespace.ClassName.MethodName
# Run only flaky tests while investigating quarantine failures.
-msbuild build.proj -t:TestSqlClientManual -p:TestFilters=category=flaky
+dotnet build -t:TestSqlClientManual -p:TestFilters=category=flaky
# Disable the default filter.
-msbuild build.proj -t:TestSqlClientFunctional -p:TestFilters=none
+dotnet build -t:TestSqlClientFunctional -p:TestFilters=none
```
When passing filter expressions that contain shell-sensitive characters such as `&`, quote or escape the value as
@@ -222,14 +226,14 @@ For SQL Server in a Linux container, WSL, or another host where SQL authenticati
You can override the config file path with the `MDS_TEST_CONFIG` environment variable:
```bash
-MDS_TEST_CONFIG=/path/to/config.json msbuild build.proj -t:TestSqlClientManual -p:TestSet=2
+MDS_TEST_CONFIG=/path/to/config.json dotnet build -t:TestSqlClientManual -p:TestSet=2
```
On PowerShell:
```powershell
$env:MDS_TEST_CONFIG = "C:\path\to\config.json"
-msbuild build.proj -t:TestSqlClientManual -p:TestSet=2
+dotnet build -t:TestSqlClientManual -p:TestSet=2
```
## Configuration Properties
@@ -289,23 +293,23 @@ If `TestSet` is omitted, all sets are compiled and run. You can combine sets by
Test results are written to `test_results` by default. Override the location with `TestResultsFolderPath`:
```bash
-msbuild build.proj -t:TestSqlClientUnit -p:TestResultsFolderPath=/tmp/sqlclient-test-results
+dotnet build -t:TestSqlClientUnit -p:TestResultsFolderPath=/tmp/sqlclient-test-results
```
Hang blame collection is enabled by default with a `10m` timeout. To increase the timeout:
```bash
-msbuild build.proj -t:TestSqlClientManual -p:TestBlameTimeout=30m
+dotnet build -t:TestSqlClientManual -p:TestBlameTimeout=30m
```
To disable hang blame collection:
```bash
-msbuild build.proj -t:TestSqlClientManual -p:TestBlameTimeout=0
+dotnet build -t:TestSqlClientManual -p:TestBlameTimeout=0
```
Code coverage is enabled by default. To disable it for a faster local run:
```bash
-msbuild build.proj -t:TestSqlClientUnit -p:TestCodeCoverage=false
+dotnet build -t:TestSqlClientUnit -p:TestCodeCoverage=false
```
diff --git a/build.proj b/build.proj
index e32caef276..c2010a127a 100644
--- a/build.proj
+++ b/build.proj
@@ -552,7 +552,7 @@
- "$(DotnetPath)dotnet" msbuild "$(SqlClientProjectPath)"
+ "$(DotnetPath)dotnet" build "$(SqlClientProjectPath)"
-nologo
-verbosity:quiet
-getProperty:SqlClientPackageVersion
diff --git a/eng/pipelines/common/templates/steps/ci-project-build-step.yml b/eng/pipelines/common/templates/steps/ci-project-build-step.yml
index bbd2d10744..3b9ebf29d0 100644
--- a/eng/pipelines/common/templates/steps/ci-project-build-step.yml
+++ b/eng/pipelines/common/templates/steps/ci-project-build-step.yml
@@ -75,18 +75,17 @@ parameters:
steps:
# Build MDS
- ${{ if or(eq(parameters.build, 'MDS'), eq(parameters.build, 'all'), eq(parameters.build, 'allNoDocs')) }}:
- - task: MSBuild@1
+ - task: DotNetCoreCLI@2
displayName: 'Build Driver'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
inputs:
- solution: build.proj
- msbuildArchitecture: x64
- platform: '${{ parameters.platform }}'
- configuration: '${{ parameters.buildConfiguration }}'
- msbuildArguments:
+ command: build
+ projects: build.proj
+ arguments: >-
-t:BuildSqlClient
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:ReferenceType=${{ parameters.referenceType }}
- -p:BuildNumber=${{ parameters.assemblyBuildNumber }}
+ -p:BuildNumber=${{ parameters.buildNumber }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
@@ -98,14 +97,13 @@ steps:
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
inputs:
command: build
- projects: src/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider/src/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.csproj
+ projects: build.proj
arguments: >-
- --configuration ${{ parameters.buildConfiguration }}
+ -t:BuildAkvProvider
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:ReferenceType=${{ parameters.referenceType }}
-p:BuildNumber=${{ parameters.buildNumber }}
- -p:AssemblyBuildNumber=${{ parameters.assemblyBuildNumber }}
- -p:AkvProviderPackageVersion=${{ parameters.akvPackageVersion }}
- -p:AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}
- -p:LoggingPackageVersion=${{ parameters.loggingPackageVersion }}
- -p:SqlClientPackageVersion=${{ parameters.mdsPackageVersion }}
-
+ -p:PackageVersionAkvProvider=${{ parameters.akvPackageVersion }}
+ -p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
+ -p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
+ -p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
diff --git a/eng/pipelines/common/templates/steps/run-all-tests-step.yml b/eng/pipelines/common/templates/steps/run-all-tests-step.yml
index e3397e45f0..cf3ce206a4 100644
--- a/eng/pipelines/common/templates/steps/run-all-tests-step.yml
+++ b/eng/pipelines/common/templates/steps/run-all-tests-step.yml
@@ -77,96 +77,91 @@ steps:
- ${{if eq(parameters.operatingSystem, 'Windows')}}:
- ${{if eq(parameters.referenceType, 'Project')}}:
- - task: MSBuild@1
+ - task: DotNetCoreCLI@2
displayName: 'Run Unit Tests ${{parameters.msbuildArchitecture }}'
condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- solution: build.proj
- msbuildArchitecture: ${{parameters.msbuildArchitecture }}
- platform: '${{parameters.platform }}'
- configuration: '${{parameters.buildConfiguration }}'
+ command: build
+ projects: build.proj
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientUnit
-p:TestFramework=${{ parameters.targetFramework }}
- -p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:TestResultsFolderPath=TestResults
${{ else }}: # x86
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientUnit
-p:TestFramework=${{ parameters.targetFramework }}
- -p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:DotnetPath=${{ parameters.dotnetx86RootPath }}
-p:TestResultsFolderPath=TestResults
- - task: MSBuild@1
+ - task: DotNetCoreCLI@2
displayName: 'Run Flaky Unit Tests ${{parameters.msbuildArchitecture }}'
condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- solution: build.proj
- msbuildArchitecture: ${{parameters.msbuildArchitecture }}
- platform: '${{parameters.platform }}'
- configuration: '${{parameters.buildConfiguration }}'
+ command: build
+ projects: build.proj
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientUnit
-p:TestFramework=${{ parameters.targetFramework }}
- -p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:TestFilters="category=flaky"
-p:TestResultsFolderPath=TestResults
-p:TestCodeCoverage=false
${{ else }}: # x86
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientUnit
-p:TestFramework=${{ parameters.targetFramework }}
- -p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:DotnetPath=${{ parameters.dotnetx86RootPath }}
-p:TestFilters="category=flaky"
-p:TestResultsFolderPath=TestResults
-p:TestCodeCoverage=false
continueOnError: true
- - task: MSBuild@1
+ - task: DotNetCoreCLI@2
displayName: 'Run Functional Tests ${{parameters.msbuildArchitecture }}'
condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- solution: build.proj
- msbuildArchitecture: ${{parameters.msbuildArchitecture }}
- platform: '${{parameters.platform }}'
- configuration: '${{parameters.buildConfiguration }}'
+ command: build
+ projects: build.proj
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientFunctional
-p:TestFramework=${{ parameters.targetFramework }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
-p:TestResultsFolderPath=TestResults
${{ else }}: # x86
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientFunctional
-p:TestFramework=${{ parameters.targetFramework }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
-p:DotnetPath=${{ parameters.dotnetx86RootPath }}
-p:TestResultsFolderPath=TestResults
- - task: MSBuild@1
- condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
+ - task: DotNetCoreCLI@2
displayName: 'Run Flaky Functional Tests ${{parameters.msbuildArchitecture }}'
+ condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- solution: build.proj
- msbuildArchitecture: ${{parameters.msbuildArchitecture }}
- platform: '${{parameters.platform }}'
- configuration: '${{parameters.buildConfiguration }}'
+ command: build
+ projects: build.proj
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientFunctional
-p:TestFramework=${{ parameters.targetFramework }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
@@ -174,10 +169,11 @@ steps:
-p:TestResultsFolderPath=TestResults
-p:TestCodeCoverage=false
${{ else }}: # x86
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientFunctional
-p:TestFramework=${{ parameters.targetFramework }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
@@ -187,30 +183,30 @@ steps:
-p:TestCodeCoverage=false
continueOnError: true
- - task: MSBuild@1
- condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
+ - task: DotNetCoreCLI@2
displayName: 'Run Manual Tests ${{parameters.msbuildArchitecture }}'
+ condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- solution: build.proj
- msbuildArchitecture: ${{parameters.msbuildArchitecture }}
- platform: '${{parameters.platform }}'
- configuration: '${{parameters.buildConfiguration }}'
+ command: build
+ projects: build.proj
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientManual
-p:TestFramework=${{ parameters.targetFramework }}
-p:TestSet=${{ parameters.testSet }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
-p:TestResultsFolderPath=TestResults
${{ else }}: # x86
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientManual
-p:TestFramework=${{ parameters.targetFramework }}
-p:TestSet=${{ parameters.testSet }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
@@ -218,20 +214,19 @@ steps:
-p:TestResultsFolderPath=TestResults
retryCountOnTaskFailure: ${{parameters.retryCountOnManualTests }}
- - task: MSBuild@1
- condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
+ - task: DotNetCoreCLI@2
displayName: 'Run Flaky Manual Tests ${{parameters.msbuildArchitecture }}'
+ condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- solution: build.proj
- msbuildArchitecture: ${{parameters.msbuildArchitecture }}
- platform: '${{parameters.platform }}'
- configuration: '${{parameters.buildConfiguration }}'
+ command: build
+ projects: build.proj
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientManual
-p:TestFramework=${{ parameters.targetFramework }}
-p:TestSet=${{ parameters.testSet }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
@@ -239,11 +234,12 @@ steps:
-p:TestResultsFolderPath=TestResults
-p:TestCodeCoverage=false
${{ else }}: # x86
- msbuildArguments: >-
+ arguments: >-
-t:TestSqlClientManual
-p:TestFramework=${{ parameters.targetFramework }}
-p:TestSet=${{ parameters.testSet }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
@@ -259,124 +255,97 @@ steps:
displayName: 'Run Unit Tests'
condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- command: custom
+ command: build
projects: build.proj
- custom: msbuild
arguments: >-
-t:TestSqlClientUnit
-p:TestFramework=${{ parameters.targetFramework }}
- -p:ReferenceType=${{ parameters.referenceType }}
- -p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
- -p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
- -p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
-p:Configuration=${{ parameters.buildConfiguration }}
-p:TestResultsFolderPath=TestResults
- verbosityRestore: Detailed
- verbosityPack: Detailed
- task: DotNetCoreCLI@2
displayName: 'Run Flaky Unit Tests'
condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- command: custom
+ command: build
projects: build.proj
- custom: msbuild
arguments: >-
-t:TestSqlClientUnit
-p:TestFramework=${{ parameters.targetFramework }}
- -p:ReferenceType=${{ parameters.referenceType }}
- -p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
- -p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
- -p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
-p:Configuration=${{ parameters.buildConfiguration }}
-p:TestFilters="category=flaky"
-p:TestResultsFolderPath=TestResults
-p:TestCodeCoverage=false
- verbosityRestore: Detailed
- verbosityPack: Detailed
continueOnError: true
- task: DotNetCoreCLI@2
displayName: 'Run Functional Tests'
condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- command: custom
+ command: build
projects: build.proj
- custom: msbuild
arguments: >-
-t:TestSqlClientFunctional
-p:TestFramework=${{ parameters.targetFramework }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
- -p:Configuration=${{ parameters.buildConfiguration }}
-p:TestResultsFolderPath=TestResults
- verbosityRestore: Detailed
- verbosityPack: Detailed
- task: DotNetCoreCLI@2
- condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
displayName: 'Run Flaky Functional Tests'
+ condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- command: custom
+ command: build
projects: build.proj
- custom: msbuild
arguments: >-
-t:TestSqlClientFunctional
-p:TestFramework=${{ parameters.targetFramework }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
- -p:Configuration=${{ parameters.buildConfiguration }}
-p:TestFilters="category=flaky"
-p:TestResultsFolderPath=TestResults
-p:TestCodeCoverage=false
- verbosityRestore: Detailed
- verbosityPack: Detailed
continueOnError: true
- task: DotNetCoreCLI@2
displayName: 'Run Manual Tests'
condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- command: custom
+ command: build
projects: build.proj
- custom: msbuild
arguments: >-
-t:TestSqlClientManual
-p:TestFramework=${{ parameters.targetFramework }}
-p:TestSet=${{ parameters.testSet }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
- -p:Configuration=${{ parameters.buildConfiguration }}
-p:TestResultsFolderPath=TestResults
- verbosityRestore: Detailed
- verbosityPack: Detailed
retryCountOnTaskFailure: ${{parameters.retryCountOnManualTests }}
- task: DotNetCoreCLI@2
displayName: 'Run Flaky Manual Tests'
condition: and(eq(variables['setupSucceeded'], 'true'), succeededOrFailed())
inputs:
- command: custom
+ command: build
projects: build.proj
- custom: msbuild
arguments: >-
-t:TestSqlClientManual
-p:TestFramework=${{ parameters.targetFramework }}
-p:TestSet=${{ parameters.testSet }}
-p:ReferenceType=${{ parameters.referenceType }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackageVersionAbstractions=${{ parameters.abstractionsPackageVersion }}
-p:PackageVersionLogging=${{ parameters.loggingPackageVersion }}
-p:PackageVersionSqlClient=${{ parameters.mdsPackageVersion }}
- -p:Configuration=${{ parameters.buildConfiguration }}
-p:TestFilters="category=flaky"
-p:TestResultsFolderPath=TestResults
-p:TestCodeCoverage=false
- verbosityRestore: Detailed
- verbosityPack: Detailed
continueOnError: true
-
diff --git a/eng/pipelines/jobs/test-abstractions-package-ci-job.yml b/eng/pipelines/jobs/test-abstractions-package-ci-job.yml
index a88d4dc347..226dc1ae2a 100644
--- a/eng/pipelines/jobs/test-abstractions-package-ci-job.yml
+++ b/eng/pipelines/jobs/test-abstractions-package-ci-job.yml
@@ -91,7 +91,7 @@ jobs:
# dotnet CLI arguments for build/test/pack commands
- name: buildArguments
value: >-
- --configuration ${{ parameters.buildConfiguration }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
--verbosity ${{ parameters.dotnetVerbosity }}
# Explicitly unset the $PLATFORM environment variable that is set by the
diff --git a/eng/pipelines/jobs/test-azure-package-ci-job.yml b/eng/pipelines/jobs/test-azure-package-ci-job.yml
index 0ad4246cb0..cd9b87e103 100644
--- a/eng/pipelines/jobs/test-azure-package-ci-job.yml
+++ b/eng/pipelines/jobs/test-azure-package-ci-job.yml
@@ -149,7 +149,7 @@ jobs:
# dotnet CLI arguments for build/test/pack commands.
- name: buildArguments
value: >-
- --configuration ${{ parameters.buildConfiguration }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
--verbosity ${{ parameters.dotnetVerbosity }}
-p:ReferenceType=${{ parameters.referenceType }}
-p:AbstractionsPackageVersion=${{ parameters.abstractionsPackageVersion }}
diff --git a/eng/pipelines/onebranch/steps/build-buildproj-step.yml b/eng/pipelines/onebranch/steps/build-buildproj-step.yml
index 69c402792e..9e02243537 100644
--- a/eng/pipelines/onebranch/steps/build-buildproj-step.yml
+++ b/eng/pipelines/onebranch/steps/build-buildproj-step.yml
@@ -47,13 +47,14 @@ steps:
secureFile: 'netfxKeypair.snk'
name: keyFile
- - task: MSBuild@1
+ - task: DotNetCoreCLI@2
displayName: 'build.proj - Build${{ parameters.packageShortName }}'
inputs:
- solution: '$(REPO_ROOT)/build.proj'
- configuration: '${{ parameters.buildConfiguration }}'
- msbuildArguments: >-
+ command: build
+ projects: '$(REPO_ROOT)/build.proj'
+ arguments: >-
-t:Build${{ parameters.packageShortName }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:ReferenceType=Package
-p:SigningKeyPath="$(keyFile.secureFilePath)"
-p:BuildNumber="$(Build.BuildNumber)"
diff --git a/eng/pipelines/onebranch/steps/pack-buildproj-step.yml b/eng/pipelines/onebranch/steps/pack-buildproj-step.yml
index a0e6e02426..a495b982dc 100644
--- a/eng/pipelines/onebranch/steps/pack-buildproj-step.yml
+++ b/eng/pipelines/onebranch/steps/pack-buildproj-step.yml
@@ -56,13 +56,14 @@ parameters:
type: string
steps:
- - task: MSBuild@1
+ - task: DotNetCoreCLI@2
displayName: 'build.proj - Pack${{ parameters.packageShortName }}'
inputs:
- solution: '$(REPO_ROOT)/build.proj'
- configuration: '${{ parameters.buildConfiguration }}'
- msbuildArguments: >-
+ command: build
+ projects: '$(REPO_ROOT)/build.proj'
+ arguments: >-
-t:Pack${{ parameters.packageShortName }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
-p:PackBuild=false
-p:ReferenceType=Package
-p:BuildNumber="$(Build.BuildNumber)"
diff --git a/eng/pipelines/onebranch/steps/roslyn-analyzers-buildproj-step.yml b/eng/pipelines/onebranch/steps/roslyn-analyzers-buildproj-step.yml
index ba8cb79c83..1f7c22a554 100644
--- a/eng/pipelines/onebranch/steps/roslyn-analyzers-buildproj-step.yml
+++ b/eng/pipelines/onebranch/steps/roslyn-analyzers-buildproj-step.yml
@@ -13,7 +13,8 @@
# steps that perform versioning or signing.
parameters:
- # Optional arguments to pass to msbuild to indicate what version of dependencies should be used.
+ # Optional arguments to pass to dotnet build to indicate what version of dependencies should be
+ # used.
- name: dependencyArguments
type: string
default: ''
@@ -30,7 +31,7 @@ parameters:
- SqlClient
- SqlServer
- # Version to assign to the project to build. This will be passed into msbuild as
+ # Version to assign to the project to build. This will be passed into dotnet build as
# "-p:PackageVersion(packageShortName)".
# @TODO: Make this optional to enable progressively migrating to single-source versioning.
- name: packageVersion
diff --git a/eng/pipelines/stress/stress-tests-job.yml b/eng/pipelines/stress/stress-tests-job.yml
index 40cecf6e93..88615ee87c 100644
--- a/eng/pipelines/stress/stress-tests-job.yml
+++ b/eng/pipelines/stress/stress-tests-job.yml
@@ -102,7 +102,7 @@ jobs:
value: >-
--verbosity ${{ parameters.dotnetVerbosity }}
--artifacts-path $(dotnetArtifactsDir)
- --configuration ${{ parameters.buildConfiguration }}
+ -p:Configuration=${{ parameters.buildConfiguration }}
# The contents of the config file to use for all tests. We will write this to a JSON file and
# then point to it via the STRESS_CONFIG_FILE environment variable.
diff --git a/tools/targets/CompareMdsRefAssemblies.targets b/tools/targets/CompareMdsRefAssemblies.targets
index 1e89a26bf3..bccfa00930 100644
--- a/tools/targets/CompareMdsRefAssemblies.targets
+++ b/tools/targets/CompareMdsRefAssemblies.targets
@@ -102,9 +102,9 @@
-
+
@@ -134,7 +134,7 @@
Text="--- Comparing %(_RefTfm.Identity) ref vs baseline $(BaselinePackageVersion) ---" />
From eaf06b7ab7d49a580c6f30151a0034b10b0303bc Mon Sep 17 00:00:00 2001
From: Paul Medynski <31868385+paulmedynski@users.noreply.github.com>
Date: Mon, 27 Apr 2026 12:22:16 -0300
Subject: [PATCH 3/5] Task 43695: Use dotnet CLI exclusively
- Converted the CI AKV build/pack steps to use build.proj targets.
---
build.proj | 2 +-
.../templates/jobs/ci-build-nugets-job.yml | 35 ++++++++++++-------
2 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/build.proj b/build.proj
index c2010a127a..28471d25a8 100644
--- a/build.proj
+++ b/build.proj
@@ -82,7 +82,7 @@
+
- "$(DotnetPath)dotnet" build "$(SqlClientProjectPath)"
+ "$(DotnetPath)dotnet" msbuild "$(SqlClientProjectPath)"
-nologo
-verbosity:quiet
-getProperty:SqlClientPackageVersion
diff --git a/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml b/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
index 9b5a39d4cf..d7dbb2b6b0 100644
--- a/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
+++ b/eng/pipelines/common/templates/jobs/ci-build-nugets-job.yml
@@ -194,7 +194,7 @@ jobs:
- task: CopyFiles@2
displayName: Copy AKV Package to Output Folder
inputs:
- sourceFolder: src/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider/src/bin/${{ parameters.buildConfiguration }}
+ sourceFolder: artifacts/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider/${{ parameters.buildConfiguration }}
contents: |
**/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider*.nupkg
**/Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider*.snupkg
From 438d1abb2d1b616991b081c47ff336137dd03fd3 Mon Sep 17 00:00:00 2001
From: Paul Medynski <31868385+paulmedynski@users.noreply.github.com>
Date: Tue, 28 Apr 2026 13:50:11 -0300
Subject: [PATCH 5/5] Fixed a typo in agent testing instructions.
---
.github/instructions/testing.instructions.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/instructions/testing.instructions.md b/.github/instructions/testing.instructions.md
index 7a8f077ce4..7c415c280e 100644
--- a/.github/instructions/testing.instructions.md
+++ b/.github/instructions/testing.instructions.md
@@ -115,7 +115,7 @@ The default test filter is defined in `build.proj` via `TestFilters`:
```xml
category!=failing&category!=flaky&category!=interactive
```
-This can be overridden via build property: `dotnet build build.proj -t:TestSqlClientUnit -p:FilterStatement="your_filter"`.
+This can be overridden via build property: `dotnet build build.proj -t:TestSqlClientUnit -p:TestFilters="your_filter"`.
### Test Attributes
```csharp