Skip to content

Commit fdb50d3

Browse files
333fredakhera99maryamariyansharwellRikkiGibson
authored
Merge main to runtime async branch (#77700)
* wip * wip * wip * wip * wip * wip * wip * remove some commented out code * still cleaning up * revert file * clean up + option * wip * dispose of disable of intellicode line completions * comments * comments * add quota exceeded checks * fix tests * revert file * remove unused optional params * last few fixes * feedback * fix tests * small fix * fix * feedback * feedback * removed per comments * remove unused usings * Fixer/Analyzer for implementing method TODO - Try invoking copilot service from Features layer (needs GenerateMethod APIs added to EA) - Try invoking semantic search from Features layer Reviews done: - Skimmed through the proposal edit approach used for /// - Excluded diff for ///, does not exist in copilot service * feedback * feedback * move stuff around with new EA structure in roslyn * wip * feedback * feedbacl * fix * feedback * feedback * feedback * revert * remove null check * clean up * fix * fix tests * local ad ons * local ad ons * Add main bits for generating method implementation * todo next * update APIs * trial 1 * Fix compile after merge * temp1 * temp2 * Implement method, end-to-end for one-off code action * corrections * cleanup * cleanup preliminary check * Fix bug * cleanup and fixes * remove local changes for pr * correct spacing * cleanup * Add unit test - takes code block suggestion to replace with method body * Add test, support expression body clause later * Change the FAR API call * using `.Parent.FirstAncestorOrSelf` * Improve wrapper implementation * Apply first round code review * Merge DualChangeAction into DocumentChangeAction * Make IDE3000 not configurable This diagnostic is always hidden (no UI) for the sole support of the associated code fix provider. * Simplify analyzer code and improve robustness * Simplifies fixer and applies most remaining feedback * Fix compile related to DocumentChangeAction * Cleanup messaging * Add resources for messaging * Adds a few basic tests * Undo most recent analyzer changes, to keep the throw statement/expression check - Adds more test - Removes dead code - [ ] Cleanup more code - [ ] Fix failing tests - [ ] Rename API make consistent - [ ] Revisist triple slash docs - [ ] Change SyntaxNode to MemberDeclaration - [ ] Remove unexpected null checks * Apply PR feedback - [x] Adds more test - [x] Removes dead code - [x] Cleans up more code - [ ] Fix failing tests - [x] Renames API to make consistent - [x] Revisits triple slash docs - [x] API Accepts SyntaxNode - [x] Removes unreachable code * Tests renamed * Correct test setup - and do minor Cleanup * Improves readability and removes unreachable code * Correct mistakes in tests * Adds more unit tests * Fix formatting (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0055) * Fixes Analyzer tests - [ ] Fixer seems not activates in tests * Makes sure original and replacement text are properly aligned * Apply partial PR feedback - Test correction on placement of diagnostic span * cleanup * Applies feedback to change API surface * All tests pass * tests are actually failing * Fix Quota bug and show failing tests * Update tests for error conditions where diagnostics are not corrected * undo IsImplementNotImplementedExceptionEnabledAsync change * Fixes remaining tests * cleanup * Add back referencedSymbols to API call to help with perf * Gracefully comment when result is unexpected * Remove unused resource * Simplify error messages * Cleanup tests * Add missing entry for IDE3000 * Add Missing Help Link * mid stage * Removes QuotaExceeds property, received as message * Update signature * Fix missed out warning * Fix test correctness issue picked up by CI * Add logging * Apply PR feedback * Fix run code analysis on solution not reporting results Fixes #77495 * Use HangMitigatingTimeout for cases where operations do not complete synchronously * some PR feedback * spacing * Move test * Apply most remaining feedback * Applies feedback * Add runtime async to official build (#77537) * Signature now strictly uses MemberDeclarationSyntax * Update message for analyzer referencing newer compiler than host (#77541) * Updates tests * field implementation is not supported as method or property see test below ``` [InlineData("int myField;", typeof(FieldDeclarationSyntax))] public async Task TestInvalidNodeReplacement(string syntax, Type type) ``` * Fix NFW due to invoking Workspace.RaiseEventForHandlers in the CA process (#77546) NFW telemetry indicates Solution.Workspace is getting called in our server process. This is due to a recent change I made around immediate eventing. In the server process, there are no immediate (or standard) workspace event handlers, but due to this recent changewe were always calling RaiseEventForHandlers for the immediate handlers without checking for their presence. * Implement field null resilience analysis (#77127) Co-authored-by: Fred Silberberg <fred@silberberg.xyz> * Fix incremental generator in deterministic key file (#77553) * Apply PR feedback * Disable downloading the runtime packages during restore and instead ensure that it happens when needed (pack) (#77515) During the most recent SDK insertion, allocation regressions were reported in the C# editing speedometer test. Investigation yielded that these were because of restore failures in the test project as the runtime packages are not published at the point of the SDK insertion. Looking at the MS.CodeAnalysis.LanguageServer project closer revealed that these runtime identifiers needed to only be set during the pack task. This PR moves setting the RuntimeIdentifiers property to only be done during the pack task, and thus the restore task won't attempt to download these packages. As the test doesn't perform a pack on the roslyn solution, this should prevent future SDK insertions from hitting this issue again. * Simplifies assumptions - Only trigger fixer when service available * nit spacing * Fix preview window for 'implement NotImplementedException' * Simmplify * Remove uneeded helper * Fix Stack Trace Explorer for additional documents (#77517) Update IDocumentNavigationService implementation in VS to work on any TextDocument Fix IDocumentNavigationService extension to use TextDocument Fix Stack Trace Explorer to search for AdditionalDocuments when trying to find a match in file path or name Partial fix for #77499 There might be more cases where finding symbols doesn't work but filepath+line navigation should now work * Update dependencies from https://github.com/dotnet/arcade build 20250311.4 (#77569) Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.XliffTasks From Version 9.0.0-beta.25111.5 -> To Version 9.0.0-beta.25161.4 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> * Update PublishData.json (#77589) * Update main-merge.yml to not run on forks * Fix typo (#77595) * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250313.4 (#77604) Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 10.0.616001 -> To Version 10.0.616304 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> * Filter down the list of files we need to examing when looking for a :base(...) call in find refs * Move feature-oriented helpers to appropriate location * Ensure we don't touch Solution.Workspace if we don't have to This is a bit more of a defense-in-depth fix to fix a potential NFW. * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250314.1 (#77623) Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 10.0.616304 -> To Version 10.0.616401 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> * Update dependencies from https://github.com/dotnet/arcade build 20250314.2 (#77624) Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.XliffTasks From Version 9.0.0-beta.25161.4 -> To Version 9.0.0-beta.25164.2 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> * Correct how we pick up options for `ICopilotOptionsService` (#77620) * Corrections to how we pick up roslyn options settings * Cleanup * Set default for Implement with Copilot to be false * update for copilot.general.editor.enableGenerateDocumentationComment * Update BuildActionTelemetryTable tool * Add feature flag controlling Copilot prompt in Semantic Search (#77562) * Fix BuildActionTelemetryTable project * Update CodeActionDescriptionsMap. Updates program to generate new description map when analyzers are added. * Fix typo * Remove dead code, use generated regex, use filescoped namespace. * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250317.1 (#77649) Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 10.0.616401 -> To Version 10.0.616701 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> * On-the-fly-docs Pass along additional context (#77510) * wip * works end to end * some feedback * feedback * fix bugs * tests * revert settings * fix code analysis service * fix formatting * Feedback * Change vs deps flow (#77651) * Fix generation of attribute with array constant * Make ISemanticSearchCopilotUIProvider import lazy to avoid loading VS.EA.Copilot (#77516) * Fix watch window completion window upon manual completion invocation (#77656) * Fix watch window completion window upon manual completion invocation Addresses https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2287966 This recently regressed due to this recent PR: #77204 The issue here is that I changed the csharp debugger context's projection buffer creation code from always having a one char string as the second sourceSpan to sometimes having that string be empty. This allowed the completion context to include items for which a semicolon would close that scope. However, by having a zero length span, a seam was created for a tracking span at priorTrackingSpan to be introduced into the set of tracking positions that can contribute to completion. Editor completion doesn't handle this well, so we're best off always sending a non-zero length source Span, so we do so and just use a space as the value. * Generate Documentation - Bug Fixes (#77641) * fix some bugs * Feedback * Fix reflection * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250318.1 (#77672) Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 10.0.616701 -> To Version 10.0.616801 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> * Fix typo (#77678) disalloed => disallowed. * Fix SkipApplyOptimizationData parameter (#77677) * Support textDocument/semanticTokens/full * Cleanup and make semantic token processing and testing code more consistent * Fix test * Add CI validation of Semantic Search API lists (#77535) * raw strings * Fix bug where exact path match would throw for additional files (#77583) From /pull/77517/files/45c0e103f76f36bed6004f836d3dcfeae4bfae0d#r1992506030 * Update CSharpCopilotCodeAnalysisService.cs (#77691) * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20250319.2 (#77694) Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 10.0.616801 -> To Version 10.0.616902 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> --------- Co-authored-by: Ankita Khera <ankitakhera@microsoft.com> Co-authored-by: Maryam Ariyan <maariyan@microsoft.com> Co-authored-by: Sam Harwell <Sam.Harwell@microsoft.com> Co-authored-by: Rikki Gibson <rigibson@microsoft.com> Co-authored-by: Todd Grunke <toddgrun@microsoft.com> Co-authored-by: Jared Parsons <jared@paranoidcoding.org> Co-authored-by: Cyrus Najmabadi <cyrus.najmabadi@gmail.com> Co-authored-by: Andrew Hall <andrha@microsoft.com> Co-authored-by: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: Jan Jones <janjones@microsoft.com> Co-authored-by: Arun Chander <arkalyan@microsoft.com> Co-authored-by: Kauwai Lucchesi <53876126+kauwai@users.noreply.github.com> Co-authored-by: Jason Malinowski <jason.malinowski@microsoft.com> Co-authored-by: Tomáš Matoušek <tmat@users.noreply.github.com> Co-authored-by: Joey Robichaud <joseph.robichaud@microsoft.com> Co-authored-by: Ankita Khera <40616383+akhera99@users.noreply.github.com> Co-authored-by: David Barbet <dabarbet@microsoft.com> Co-authored-by: Joey Robichaud <jorobich@microsoft.com> Co-authored-by: David Wengier <david.wengier@microsoft.com> Co-authored-by: Bill Wagner <wiwagn@microsoft.com> Co-authored-by: PaddiM8 <hi@bakk.dev>
2 parents f372b6e + f35162b commit fdb50d3

File tree

178 files changed

+6308
-2153
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

178 files changed

+6308
-2153
lines changed

.github/workflows/main-merge.yml

+4-7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ on:
55
schedule:
66
# Create a merge every 3 hours (works only for merges from `main`, others would need a `push` trigger).
77
- cron: '0 */3 * * *'
8+
push:
9+
branches:
10+
- main-vs-deps
811
workflow_dispatch:
912
inputs:
1013
configuration_file_branch:
@@ -17,15 +20,9 @@ permissions:
1720
pull-requests: write
1821

1922
jobs:
20-
# The config does not support multiple flows from the same source branch,
21-
# so we need to run separately for each duplicate source branch (https://github.com/dotnet/arcade/issues/15586).
2223
merge:
24+
if: github.repository == 'dotnet/roslyn'
2325
uses: dotnet/arcade/.github/workflows/inter-branch-merge-base.yml@main
2426
with:
2527
configuration_file_path: 'eng/config/branch-merge.jsonc'
2628
configuration_file_branch: ${{ inputs.configuration_file_branch || 'main' }}
27-
merge-2:
28-
uses: dotnet/arcade/.github/workflows/inter-branch-merge-base.yml@main
29-
with:
30-
configuration_file_path: 'eng/config/branch-merge-2.jsonc'
31-
configuration_file_branch: ${{ inputs.configuration_file_branch || 'main' }}

azure-pipelines-official.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ trigger:
77
- release/dev17.*
88
- release/dev18.*
99
- features/lsp_tools_host
10+
- features/runtime-async
1011
exclude:
1112
- release/dev17.0
1213
pr: none
@@ -163,7 +164,7 @@ extends:
163164

164165
- output: pipelineArtifact
165166
displayName: 'Publish Ngen Logs'
166-
condition: succeeded()
167+
condition: and(succeeded(), ${{ not(parameters.SkipApplyOptimizationData) }})
167168
targetPath: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)\ngen'
168169
artifactName: 'NGen Logs'
169170
publishLocation: Container
@@ -304,7 +305,7 @@ extends:
304305
-configuration $(BuildConfiguration)
305306
-officialBuildId $(Build.BuildNumber)
306307
-officialSkipTests $(SkipTests)
307-
-officialSkipApplyOptimizationData $(SkipApplyOptimizationData)
308+
-officialSkipApplyOptimizationData ${{ parameters.SkipApplyOptimizationData }}
308309
-officialSourceBranchName $(SourceBranchName)
309310
-officialIbcDrop $(IbcDrop)
310311
-officialVisualStudioDropAccessToken $(_DevDivDropAccessToken)

azure-pipelines-pr-validation.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ extends:
9898

9999
- output: pipelineArtifact
100100
displayName: 'Publish Ngen Logs'
101-
condition: succeeded()
101+
condition: and(succeeded(), ${{ not(parameters.SkipApplyOptimizationData) }})
102102
targetPath: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)\ngen'
103103
artifactName: 'NGen Logs'
104104
publishLocation: Container
@@ -242,7 +242,7 @@ extends:
242242
-configuration $(BuildConfiguration)
243243
-officialBuildId $(OriginalBuildNumber)
244244
-officialSkipTests $(SkipTests)
245-
-officialSkipApplyOptimizationData $(SkipApplyOptimizationData)
245+
-officialSkipApplyOptimizationData ${{ parameters.SkipApplyOptimizationData }}
246246
-officialSourceBranchName $(SourceBranchName)
247247
-officialIbcDrop $(IbcDrop)
248248
-officialVisualStudioDropAccessToken $(_DevDivDropAccessToken)

azure-pipelines.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ stages:
406406
- powershell: eng/build.ps1 -configuration Release -prepareMachine -ci -restore -binaryLogName Restore.binlog
407407
displayName: Restore
408408

409-
- powershell: eng/build.ps1 -configuration Release -prepareMachine -ci -build -pack -publish -sign -binaryLogName Build.binlog /p:DotnetPublishUsingPipelines=true
409+
- powershell: eng/build.ps1 -configuration Release -prepareMachine -ci -build -pack -publish -sign -binaryLogName Build.binlog /p:DotnetPublishUsingPipelines=true /p:ContinuousIntegrationBuildCorrectness=true
410410
displayName: Build
411411

412412
# While this task is not executed in the official build, this serves as a PR check for whether symbol exclusions

docs/compilers/CSharp/Compiler Breaking Changes - DotNet 9.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -183,4 +183,4 @@ of the value is as follows:
183183
5. `omit_if_default`. Redundant modifiers are disallowed. For example a private class member will be disallowed from
184184
using `private`, and a public interface member will be disallowed from using `public`. This is the option to use
185185
if you feel that restating the accessibility when it matches what the language chooses by default is redundant and
186-
should be disalloed.
186+
should be disallowed.

docs/features/field-nullability.md

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# `field` keyword nullable analysis implementation
2+
3+
See also [specification](https://github.com/dotnet/csharplang/blob/94205582d0f5c73e5765cb5888311c2f14890b95/proposals/field-keyword.md#nullability).
4+
5+
## Symbol API behavior
6+
7+
In order to decide the NullableAnnotation of a SynthesizedBackingFieldSymbol we need to:
8+
1. Decide if the getter associated with this field requires a null-resilience analysis.
9+
2. If it *doesn't* require such an analysis, then the nullable annotation of the property is used.
10+
3. If it *does*, then a binding+nullable analysis of the getter must be performed to decide the nullability of the backing field.
11+
12+
There are some significant problems with directly exposing the nullable annotation on this field symbol.
13+
1. Cost. It's not clear if it's OK for reading the NullableAnnotation off a field to cause us to bind and nullable analyze something. If some tooling is traversing member symbols for indexing or some such, it may be a problem if that causes unexpected method binding to occur where it didn't before.
14+
2. Stack cycles. In the process of binding+flow analyzing, we may want to access the nullable annotation of the field. If we are *already* in the process of determining that field's nullable annotation, then we would need to "short-circuit" and return some "placeholder" value. We would need to take care to isolate the "internal" implementation from any public implementation, in order to ensure that a consistent answer is given to users of the public API.
15+
...
16+
17+
It's tempting to avoid exposing the inferred nullable annotation in the public symbol model. This might be problematic for automated tooling which is trying to reason about nullable initialization. For example, if a diagnostic suppressor wants to suppress `CS8618` nullable initialization warnings under certain conditions. How should it decide whether/why a property like `string Prop => field ??= GetValue();` requires initialization in constructors? It's unclear to me whether this matters.
18+
19+
In the interests of *simplicity* (first make it correct, then make it fast), I'd like to move forward by *not* exposing the inferred annotation in the symbol model. Rather, we introduce a new internal API `SynthesizedBackingFieldSymbol.GetInferredNullableAnnotation()`, which `NullableWalker` will use to decide initial nullable state, report warnings, and so on. The implementation simply does an on-demand binding of the get accessor, then nullable analyzes and decides the nullable annotation. Care needs to be taken to avoid using this API in a re-entrant manner--so, the `NullableWalker` passes which are used to infer the nullability annotation must avoid calling it.
20+
21+
This means that the ordinary `FieldSymbol.TypeWithAnnotations` API would not expose the inferred nullability, and neither would `IFieldSymbol.Type` or `IFieldSymbol.NullableAnnotation`. Instead the field's nullability would always match the property's. This is something I would actually like to fix, maybe before merging to main. It feels like Quick Info, etc., should expose the inferred nullability through the ordinary APIs.
22+
23+
Once we get a handle on the behaviors of the getter null resilience, we can start talking about how to reduce cost associated with it. For example, we could try to reduce redundant binding, by forcing nullable annotations to be inferred prior to analyzing certain methods. Before processing a constructor in `MethodCompiler`, for example, maybe we would identify the getters that need to be compiled for purposes of inference, and force those to compile first.

eng/Version.Details.xml

+10-10
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
<SourceBuild RepoName="source-build-externals" ManagedOnly="true" />
99
</Dependency>
1010
<!-- Intermediate is necessary for source build. -->
11-
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="10.0.616001">
11+
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="10.0.616902">
1212
<Uri>https://github.com/dotnet/source-build-reference-packages</Uri>
13-
<Sha>8f9f6fa14523b2f2475ea0a86be1cf60b5de5336</Sha>
13+
<Sha>b99d40df247e865fb0a9de15bdcfdfa7f550a55e</Sha>
1414
<SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" />
1515
</Dependency>
1616
<Dependency Name="System.CommandLine" Version="2.0.0-beta4.24528.1">
@@ -122,19 +122,19 @@
122122
</Dependency>
123123
</ProductDependencies>
124124
<ToolsetDependencies>
125-
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.25111.5">
125+
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.25164.2">
126126
<Uri>https://github.com/dotnet/arcade</Uri>
127-
<Sha>5da211e1c42254cb35e7ef3d5a8428fb24853169</Sha>
127+
<Sha>5ba9ca776c1d0bb72b2791591e54cf51fc52dfee</Sha>
128128
</Dependency>
129129
<!-- Intermediate is necessary for source build. -->
130-
<Dependency Name="Microsoft.SourceBuild.Intermediate.arcade" Version="9.0.0-beta.25111.5">
130+
<Dependency Name="Microsoft.SourceBuild.Intermediate.arcade" Version="9.0.0-beta.25164.2">
131131
<Uri>https://github.com/dotnet/arcade</Uri>
132-
<Sha>5da211e1c42254cb35e7ef3d5a8428fb24853169</Sha>
132+
<Sha>5ba9ca776c1d0bb72b2791591e54cf51fc52dfee</Sha>
133133
<SourceBuild RepoName="arcade" ManagedOnly="true" />
134134
</Dependency>
135-
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.25111.5">
135+
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.25164.2">
136136
<Uri>https://github.com/dotnet/arcade</Uri>
137-
<Sha>5da211e1c42254cb35e7ef3d5a8428fb24853169</Sha>
137+
<Sha>5ba9ca776c1d0bb72b2791591e54cf51fc52dfee</Sha>
138138
</Dependency>
139139
<Dependency Name="Microsoft.DiaSymReader" Version="2.0.0">
140140
<Uri>https://github.com/dotnet/symreader</Uri>
@@ -150,9 +150,9 @@
150150
<Uri>https://github.com/dotnet/roslyn</Uri>
151151
<Sha>5d10d428050c0d6afef30a072c4ae68776621877</Sha>
152152
</Dependency>
153-
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="9.0.0-beta.25111.5">
153+
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="9.0.0-beta.25164.2">
154154
<Uri>https://github.com/dotnet/arcade</Uri>
155-
<Sha>5da211e1c42254cb35e7ef3d5a8428fb24853169</Sha>
155+
<Sha>5ba9ca776c1d0bb72b2791591e54cf51fc52dfee</Sha>
156156
</Dependency>
157157
<Dependency Name="Microsoft.CodeAnalysis.NetAnalyzers" Version="8.0.0-preview.23468.1">
158158
<Uri>https://github.com/dotnet/roslyn-analyzers</Uri>

eng/common/core-templates/steps/generate-sbom.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ steps:
3838
PackageName: ${{ parameters.packageName }}
3939
BuildDropPath: ${{ parameters.buildDropPath }}
4040
PackageVersion: ${{ parameters.packageVersion }}
41-
ManifestDirPath: ${{ parameters.manifestDirPath }}
41+
ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME)
4242
${{ if ne(parameters.IgnoreDirectories, '') }}:
4343
AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}'
4444

eng/common/generate-sbom-prep.ps1

+14-6
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,26 @@ Param(
44

55
. $PSScriptRoot\pipeline-logging-functions.ps1
66

7+
# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly
8+
# with their own overwriting ours. So we create it as a sub directory of the requested manifest path.
9+
$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM"
10+
$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_'
11+
$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName
12+
13+
Write-Host "Artifact name before : $ArtifactName"
14+
Write-Host "Artifact name after : $SafeArtifactName"
15+
716
Write-Host "Creating dir $ManifestDirPath"
17+
818
# create directory for sbom manifest to be placed
9-
if (!(Test-Path -path $ManifestDirPath))
19+
if (!(Test-Path -path $SbomGenerationDir))
1020
{
11-
New-Item -ItemType Directory -path $ManifestDirPath
12-
Write-Host "Successfully created directory $ManifestDirPath"
21+
New-Item -ItemType Directory -path $SbomGenerationDir
22+
Write-Host "Successfully created directory $SbomGenerationDir"
1323
}
1424
else{
1525
Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder."
1626
}
1727

1828
Write-Host "Updating artifact name"
19-
$artifact_name = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -replace '["/:<>\\|?@*"() ]', '_'
20-
Write-Host "Artifact name $artifact_name"
21-
Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$artifact_name"
29+
Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName"

eng/common/generate-sbom-prep.sh

+11-6
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,24 @@ done
1414
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
1515
. $scriptroot/pipeline-logging-functions.sh
1616

17+
18+
# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts.
19+
artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM"
20+
safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}"
1721
manifest_dir=$1
1822

19-
if [ ! -d "$manifest_dir" ] ; then
20-
mkdir -p "$manifest_dir"
21-
echo "Sbom directory created." $manifest_dir
23+
# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly
24+
# with their own overwriting ours. So we create it as a sub directory of the requested manifest path.
25+
sbom_generation_dir="$manifest_dir/$safe_artifact_name"
26+
27+
if [ ! -d "$sbom_generation_dir" ] ; then
28+
mkdir -p "$sbom_generation_dir"
29+
echo "Sbom directory created." $sbom_generation_dir
2230
else
2331
Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder."
2432
fi
2533

26-
artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM"
2734
echo "Artifact name before : "$artifact_name
28-
# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts.
29-
safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}"
3035
echo "Artifact name after : "$safe_artifact_name
3136
export ARTIFACT_NAME=$safe_artifact_name
3237
echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name"

eng/common/templates-official/job/job.yml

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ jobs:
1616
parameters:
1717
PackageVersion: ${{ parameters.packageVersion }}
1818
BuildDropPath: ${{ parameters.buildDropPath }}
19+
ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
1920
publishArtifacts: false
2021

2122
# publish artifacts

eng/common/tools.ps1

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
[bool]$useInstalledDotNetCli = if (Test-Path variable:useInstalledDotNetCli) { $useInstalledDotNetCli } else { $true }
4343

4444
# Enable repos to use a particular version of the on-line dotnet-install scripts.
45-
# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1
45+
# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.ps1
4646
[string]$dotnetInstallScriptVersion = if (Test-Path variable:dotnetInstallScriptVersion) { $dotnetInstallScriptVersion } else { 'v1' }
4747

4848
# True to use global NuGet cache instead of restoring packages to repository-local directory.
@@ -262,7 +262,7 @@ function GetDotNetInstallScript([string] $dotnetRoot) {
262262
if (!(Test-Path $installScript)) {
263263
Create-Directory $dotnetRoot
264264
$ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
265-
$uri = "https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1"
265+
$uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1"
266266

267267
Retry({
268268
Write-Host "GET $uri"

eng/common/tools.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ warn_as_error=${warn_as_error:-true}
5454
use_installed_dotnet_cli=${use_installed_dotnet_cli:-true}
5555

5656
# Enable repos to use a particular version of the on-line dotnet-install scripts.
57-
# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
57+
# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh
5858
dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'}
5959

6060
# True to use global NuGet cache instead of restoring packages to repository-local directory.
@@ -295,7 +295,7 @@ function with_retries {
295295
function GetDotNetInstallScript {
296296
local root=$1
297297
local install_script="$root/dotnet-install.sh"
298-
local install_script_url="https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh"
298+
local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh"
299299

300300
if [[ ! -a "$install_script" ]]; then
301301
mkdir -p "$root"

eng/config/PublishData.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@
175175
"vsBranch": "feature/d18initial",
176176
"vsMajorVersion": 18,
177177
"insertionTitlePrefix": "[d18.0 P1]",
178-
"insertionCreateDraftPR": true
178+
"insertionCreateDraftPR": false
179179
},
180180
"main": {
181181
"nugetKind": [

eng/config/branch-merge-2.jsonc

-10
This file was deleted.

eng/config/branch-merge.jsonc

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
// Used by .github/workflows/main-merge.yml
22
{
33
"merge-flow-configurations": {
4-
// Merge any main changes to release/dev18.0.
4+
// Merge any main changes to main-vs-deps.
55
"main": {
6+
"MergeToBranch": "main-vs-deps",
7+
"ExtraSwitches": "-QuietComments"
8+
},
9+
// Merge any main-vs-deps changes to release/dev18.0.
10+
"main-vs-deps": {
611
"MergeToBranch": "release/dev18.0",
712
"ExtraSwitches": "-QuietComments"
813
}

global.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
{
22
"sdk": {
3-
"version": "9.0.103",
3+
"version": "9.0.104",
44
"allowPrerelease": false,
55
"rollForward": "patch"
66
},
77
"tools": {
8-
"dotnet": "9.0.103",
8+
"dotnet": "9.0.104",
99
"vs": {
1010
"version": "17.8.0"
1111
}
1212
},
1313
"msbuild-sdks": {
14-
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25111.5",
15-
"Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25111.5",
14+
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25164.2",
15+
"Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25164.2",
1616
"Microsoft.Build.Traversal": "3.4.0"
1717
}
1818
}

src/Analyzers/CSharp/Analyzers/CSharpAnalyzersResources.resx

+3
Original file line numberDiff line numberDiff line change
@@ -431,4 +431,7 @@
431431
<data name="Use_unbound_generic_type" xml:space="preserve">
432432
<value>Use unbound generic type</value>
433433
</data>
434+
<data name="Implement_with_Copilot" xml:space="preserve">
435+
<value>Implement with Copilot</value>
436+
</data>
434437
</root>

src/Analyzers/CSharp/Analyzers/xlf/CSharpAnalyzersResources.cs.xlf

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Analyzers/CSharp/Analyzers/xlf/CSharpAnalyzersResources.de.xlf

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)