Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
11467d8
Update .NET SDK to v9.0.302
renovate[bot] Jul 9, 2025
68b60df
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jul 9, 2025
eef5eee
Update dependency xunit.v3 to v3 (#387)
renovate[bot] Jul 14, 2025
6b1c4db
Update dependency xunit.runner.visualstudio to 3.1.2 (#386)
renovate[bot] Jul 14, 2025
a075ec8
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jul 14, 2025
43aadc1
Skip CodeQL scanning of test code
AArnott Jul 15, 2025
2102e05
Update mcr.microsoft.com/dotnet/sdk:9.0.302-noble Docker digest to d4…
renovate[bot] Jul 15, 2025
f17cd2a
Run Component Detection explicitly before Notice
pieandcakes Jul 16, 2025
56e2404
Run Component Detection explicitly before Notice (#392)
AArnott Jul 16, 2025
fe71729
Update dependency xunit.runner.visualstudio to 3.1.3
renovate[bot] Jul 16, 2025
77f38d4
Update Dockerfile and global.json updates to v9.0.303 (#394)
renovate[bot] Jul 18, 2025
3d3b0ba
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jul 23, 2025
b6f67cc
Bump MicroBuildVersion to 2.0.199
AArnott Jul 24, 2025
6483557
Update becheran/mlc action to v1
AArnott Jul 25, 2025
8eb458b
Disable credscan task on unofficial builds
AArnott Jul 26, 2025
28382fd
Update mcr.microsoft.com/dotnet/sdk:9.0.303-noble Docker digest to a9…
renovate[bot] Jul 30, 2025
f9374d9
Pass through System.AccessToken when real signing on non-Windows buil…
tydunkel Jul 30, 2025
6f665e4
Update mcr.microsoft.com/dotnet/sdk:9.0.303-noble Docker digest to 14…
renovate[bot] Jul 31, 2025
d82349d
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Aug 3, 2025
c2b6afa
Update Dockerfile and global.json updates to v9.0.304
renovate[bot] Aug 5, 2025
eb42f5f
Update actions/download-artifact action to v5 (#399)
renovate[bot] Aug 6, 2025
801d690
Update mcr.microsoft.com/dotnet/sdk:9.0.304-noble Docker digest to 1f…
renovate[bot] Aug 6, 2025
193a34a
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Aug 6, 2025
78241e3
Add copilot-instructions.md file
AArnott Aug 9, 2025
5e1fec3
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Aug 9, 2025
28cfd93
Fix up contributing to work better on linux
AArnott Aug 10, 2025
c4de4d0
Add copilot instructions about avoiding unstable tests
AArnott Aug 10, 2025
7f486cc
Update actions/checkout action to v5 (#402)
renovate[bot] Aug 11, 2025
dc3950f
Update xunit
renovate[bot] Aug 16, 2025
6dc6ace
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Aug 16, 2025
44bc7f5
Merge the microbuild branch from https://github.com/aarnott/Library.T…
AArnott Aug 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Refer to https://hub.docker.com/_/microsoft-dotnet-sdk for available versions
FROM mcr.microsoft.com/dotnet/sdk:9.0.301-noble@sha256:4fd7d3e5aeb6cfb75e923a54cdb0b6e858b27ad3b517837917c57c2e632b5694
FROM mcr.microsoft.com/dotnet/sdk:9.0.304-noble@sha256:1f7ccf88e076bc1cb1ddbd81959fb55b886b01851b092867bb7a638435fa1f1f

# Installing mono makes `dotnet test` work without errors even for net472.
# But installing it takes a long time, so it's excluded by default.
Expand Down
23 changes: 23 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copilot instructions for this repository

## High level guidance

* Review the `CONTRIBUTING.md` file for instructions to build and test the software.
* Set the `NBGV_GitEngine` environment variable to `Disabled` before running any `dotnet` or `msbuild` commands.

## Software Design

* Design APIs to be highly testable, and all functionality should be tested.
* Avoid introducing binary breaking changes in public APIs of projects under `src` unless their project files have `IsPackable` set to `false`.

## Testing

* There should generally be one test project (under the `test` directory) per shipping project (under the `src` directory). Test projects are named after the project being tested with a `.Test` suffix.
* Tests should use the Xunit testing framework.
* Some tests are known to be unstable. When running tests, you should skip the unstable ones by running `dotnet test --filter "TestCategory!=FailsInCloudTest"`.

## Coding style

* Honor StyleCop rules and fix any reported build warnings *after* getting tests to pass.
* In C# files, use namespace *statements* instead of namespace *blocks* for all new files.
* Add API doc comments to all new public and internal members.
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
# You can define any steps you want, and they will run before the agent starts.
# If you do not check out your code, Copilot will do this for you.
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
- name: ⚙ Install prerequisites
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
- name: ⚙ Install prerequisites
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs_validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
- name: 🔗 Markup Link Checker (mlc)
uses: becheran/mlc@88c9db09b8dabab813a2edd13f955b36aa73657a # v0.22.0
uses: becheran/mlc@18a06b3aa2901ca197de59c8b0b1f54fdba6b3fa # v1.0.0
with:
args: --do-not-warn-for-redirect-to https://learn.microsoft.com*,https://dotnet.microsoft.com/*,https://dev.azure.com/*,https://app.codecov.io/*,https://microsoft.github.io/vs-threading/* -p docfx -i https://aka.ms/onboardsupport,https://aka.ms/spot,https://msrc.microsoft.com/*,https://www.microsoft.com/msrc*,https://microsoft.com/msrc*
- name: ⚙ Install prerequisites
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/libtemplate-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.

Expand Down
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ Push the tag.
When your repo is hosted by GitHub and you are using GitHub Actions, you should create a GitHub Release using the standard GitHub UI.
Having previously used `nbgv tag` and pushing the tag will help you identify the precise commit and name to use for this release.

After publishing the release, the `.github\workflows\release.yml` workflow will be automatically triggered, which will:
After publishing the release, the `.github/workflows/release.yml` workflow will be automatically triggered, which will:

1. Find the most recent `.github\workflows\build.yml` GitHub workflow run of the tagged release.
1. Find the most recent `.github/workflows/build.yml` GitHub workflow run of the tagged release.
1. Upload the `deployables` artifact from that workflow run to your GitHub Release.
1. If you have `NUGET_API_KEY` defined as a secret variable for your repo or org, any nuget packages in the `deployables` artifact will be pushed to nuget.org.

Expand Down Expand Up @@ -95,7 +95,7 @@ The best way to keep your repo in sync with Library.Template's evolving features
```ps1
git fetch
git checkout origin/main
.\tools\MergeFrom-Template.ps1
./tools/MergeFrom-Template.ps1
# resolve any conflicts, then commit the merge commit.
git push origin -u HEAD
```
3 changes: 3 additions & 0 deletions CodeQL.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
path_classifiers:
library:
- 'test/**'
6 changes: 3 additions & 3 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
<MessagePackVersion>2.5.198</MessagePackVersion>
<MicroBuildVersion>2.0.198</MicroBuildVersion>
<MicroBuildVersion>2.0.199</MicroBuildVersion>
<RoslynVersion>4.14.0</RoslynVersion>
<RoslynVersionForAnalyzers>4.14.0</RoslynVersionForAnalyzers>
<VisualStudioThreadingVersion>17.14.15</VisualStudioThreadingVersion>
Expand Down Expand Up @@ -58,8 +58,8 @@
<ItemGroup Label="Library.Template">
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageVersion Include="Microsoft.VisualStudio.Internal.MicroBuild.NonShipping" Version="$(MicroBuildVersion)" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.1" />
<PackageVersion Include="xunit.v3" Version="2.0.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.4" />
<PackageVersion Include="xunit.v3" Version="3.0.1" />
</ItemGroup>
<ItemGroup>
<GlobalPackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="$(CodeAnalysisAnalyzerVersion)" />
Expand Down
2 changes: 2 additions & 0 deletions azure-pipelines/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,7 @@ jobs:
parameters:
Is1ESPT: ${{ parameters.Is1ESPT }}
RunTests: ${{ parameters.RunTests }}
BuildRequiresAccessToken: ${{ parameters.RealSign }} # Real signing on non-Windows machines requires passing through access token to build steps that sign
osRID: linux
- ${{ if parameters.EnableDotNetFormatCheck }}:
- script: dotnet format --verify-no-changes --exclude test/NativeAOTCompatibility.Test
Expand Down Expand Up @@ -284,6 +285,7 @@ jobs:
parameters:
Is1ESPT: ${{ parameters.Is1ESPT }}
RunTests: ${{ parameters.RunTests }}
BuildRequiresAccessToken: ${{ parameters.RealSign }} # Real signing on non-Windows machines requires passing through access token to build steps that sign
osRID: osx

- job: WrapUp
Expand Down
6 changes: 6 additions & 0 deletions azure-pipelines/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,17 @@ parameters:
default: false
- name: Is1ESPT
type: boolean
- name: BuildRequiresAccessToken
type: boolean
default: false

steps:

- script: dotnet build -t:build,pack --no-restore -c $(BuildConfiguration) -warnAsError -warnNotAsError:NU1901,NU1902,NU1903,NU1904,LOCTASK002 /bl:"$(Build.ArtifactStagingDirectory)/build_logs/build.binlog"
displayName: 🛠 dotnet build
${{ if parameters.BuildRequiresAccessToken }}:
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)

- ${{ if not(parameters.IsOptProf) }}:
- powershell: tools/dotnet-test-cloud.ps1 -Configuration $(BuildConfiguration) -Agent $(Agent.JobName) -PublishResults
Expand Down
2 changes: 2 additions & 0 deletions azure-pipelines/libtemplate-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ extends:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Windows2022
credscan:
enabled: false

stages:
- stage: Merge
Expand Down
6 changes: 3 additions & 3 deletions azure-pipelines/microbuild.before.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ parameters:
steps:
- ${{ if and(not(parameters.IsOptProf), ne(variables['Build.Reason'], 'PullRequest')) }}:
# notice@0 requires CG detection to run first, and non-default branches don't inject it automatically.
- ${{ if ne(variables['Build.SourceBranch'], 'refs/heads/main') }}:
- task: ComponentGovernanceComponentDetection@0
displayName: 🔍 Component Detection
# default branch injection (main) is happening too late for notice@0 to run successfully. Adding this as a workaround.
- task: ComponentGovernanceComponentDetection@0
displayName: 🔍 Component Detection

- task: notice@0
displayName: 🛠️ Generate NOTICE file
Expand Down
2 changes: 2 additions & 0 deletions azure-pipelines/unofficial.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ extends:
parameters:
sdl:
sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES
credscan:
enabled: false
suppression:
suppressionFile: $(System.DefaultWorkingDirectory)\azure-pipelines\falsepositives.gdnsuppress
enableProductionSDL: ${{ parameters.EnableProductionSDL }}
Expand Down
2 changes: 2 additions & 0 deletions azure-pipelines/vs-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ extends:
parameters:
sdl:
sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES
credscan:
enabled: false

stages:
- stage: Build
Expand Down
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"sdk": {
"version": "9.0.301",
"version": "9.0.304",
"rollForward": "patch",
"allowPrerelease": false
},
Expand Down