diff --git a/.github/ISSUE_TEMPLATE/z-apidocs-feedback.yml b/.github/ISSUE_TEMPLATE/z-apidocs-feedback.yml
new file mode 100644
index 0000000000000..4ebe78e3dfa34
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/z-apidocs-feedback.yml
@@ -0,0 +1,46 @@
+name: Learn feedback control.
+description: |
+ ⛔ This template is hooked into the feedback control on Roslyn API documentation on docs.microsoft.com. It automatically fills in several fields for you. Don't use for other purposes. ⛔
+body:
+ - type: markdown
+ attributes:
+ value: "## Issue information"
+ - type: markdown
+ attributes:
+ value: Select the issue type, and describe the issue in the text box below. Add as much detail as needed to help us resolve the issue.
+ - type: dropdown
+ id: issue-type
+ attributes:
+ label: Type of issue
+ options:
+ - Typo
+ - Code doesn't work
+ - Missing information
+ - Outdated article
+ - Other (describe below)
+ validations:
+ required: true
+ - type: textarea
+ id: feedback
+ validations:
+ required: true
+ attributes:
+ label: Description
+ - type: markdown
+ attributes:
+ value: "## 🚧 Article information 🚧"
+ - type: markdown
+ attributes:
+ value: "*Don't modify the following fields*. They are automatically filled in for you. Doing so will disconnect your issue from the affected article. *Don't edit them*."
+ - type: input
+ id: pageUrl
+ validations:
+ required: true
+ attributes:
+ label: Page URL
+ - type: input
+ id: contentSourceUrl
+ validations:
+ required: true
+ attributes:
+ label: Content source URL
diff --git a/Roslyn.sln b/Roslyn.sln
index b682dc262a06b..43bbc84d09a61 100644
--- a/Roslyn.sln
+++ b/Roslyn.sln
@@ -1,4 +1,3 @@
-
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31319.15
@@ -363,8 +362,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Lang
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ExternalAccess.Debugger", "src\Tools\ExternalAccess\Debugger\Microsoft.CodeAnalysis.ExternalAccess.Debugger.csproj", "{655A5B07-39B8-48CD-8590-8AC0C2B708D8}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Roslyn.VisualStudio.Setup.ServiceHub.Desktop.Config", "src\Setup\DevDivVsix\ServiceHubConfig\Roslyn.VisualStudio.Setup.ServiceHub.Desktop.Config.csproj", "{3D33BBFD-EC63-4E8C-A714-0A48A3809A87}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ExternalAccess.FSharp.UnitTests", "src\Tools\ExternalAccess\FSharpTest\Microsoft.CodeAnalysis.ExternalAccess.FSharp.UnitTests.csproj", "{BFFB5CAE-33B5-447E-9218-BDEBFDA96CB5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ExternalAccess.Apex", "src\Tools\ExternalAccess\Apex\Microsoft.CodeAnalysis.ExternalAccess.Apex.csproj", "{FC32EF16-31B1-47B3-B625-A80933CB3F29}"
@@ -544,6 +541,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Feat
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Features.Test.Utilities", "src\Features\TestUtilities\Microsoft.CodeAnalysis.Features.Test.Utilities.csproj", "{5762E483-75CE-4328-A410-511F30737712}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.ExternalAccess.VisualDiagnostics", "src\Tools\ExternalAccess\VisualDiagnostics\Microsoft.CodeAnalysis.ExternalAccess.VisualDiagnostics.csproj", "{6D819E80-BA2F-4317-8368-37F8F4434D3A}"
+EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0F3118AE-8D36-4384-8E80-BD6566365305}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{47D004BE-F797-430E-8A18-4B0CDFD56643}"
@@ -556,6 +555,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CommonLanguageSer
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests", "src\Compilers\CSharp\Test\Emit3\Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests.csproj", "{4E273CBC-BB1D-4AC1-91DB-C62FC83E0350}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SemanticSearch", "SemanticSearch", "{52ABB0E4-C3A1-4897-B51B-18EDA83F5D20}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SemanticSearch.BuildTask", "src\Tools\SemanticSearch\BuildTask\SemanticSearch.BuildTask.csproj", "{FCE88BBD-9BBD-4871-B9B0-DE176D73A6B0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SemanticSearch.ReferenceAssemblies", "src\Tools\SemanticSearch\ReferenceAssemblies\SemanticSearch.ReferenceAssemblies.csproj", "{EDEF898A-CEFA-4151-8168-D0231A602093}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SemanticSearch.BuildTask.UnitTests", "src\Tools\SemanticSearch\Tests\SemanticSearch.BuildTask.UnitTests.csproj", "{D817E3CE-F603-499B-B02A-7DECD017B170}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -1106,10 +1113,6 @@ Global
{655A5B07-39B8-48CD-8590-8AC0C2B708D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{655A5B07-39B8-48CD-8590-8AC0C2B708D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{655A5B07-39B8-48CD-8590-8AC0C2B708D8}.Release|Any CPU.Build.0 = Release|Any CPU
- {3D33BBFD-EC63-4E8C-A714-0A48A3809A87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3D33BBFD-EC63-4E8C-A714-0A48A3809A87}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3D33BBFD-EC63-4E8C-A714-0A48A3809A87}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3D33BBFD-EC63-4E8C-A714-0A48A3809A87}.Release|Any CPU.Build.0 = Release|Any CPU
{BFFB5CAE-33B5-447E-9218-BDEBFDA96CB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BFFB5CAE-33B5-447E-9218-BDEBFDA96CB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BFFB5CAE-33B5-447E-9218-BDEBFDA96CB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -1358,6 +1361,10 @@ Global
{5762E483-75CE-4328-A410-511F30737712}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5762E483-75CE-4328-A410-511F30737712}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5762E483-75CE-4328-A410-511F30737712}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6D819E80-BA2F-4317-8368-37F8F4434D3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6D819E80-BA2F-4317-8368-37F8F4434D3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6D819E80-BA2F-4317-8368-37F8F4434D3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6D819E80-BA2F-4317-8368-37F8F4434D3A}.Release|Any CPU.Build.0 = Release|Any CPU
{DB96C25F-39A9-4A6A-92BC-D1E42717308F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB96C25F-39A9-4A6A-92BC-D1E42717308F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB96C25F-39A9-4A6A-92BC-D1E42717308F}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -1370,6 +1377,18 @@ Global
{4E273CBC-BB1D-4AC1-91DB-C62FC83E0350}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E273CBC-BB1D-4AC1-91DB-C62FC83E0350}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E273CBC-BB1D-4AC1-91DB-C62FC83E0350}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FCE88BBD-9BBD-4871-B9B0-DE176D73A6B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FCE88BBD-9BBD-4871-B9B0-DE176D73A6B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FCE88BBD-9BBD-4871-B9B0-DE176D73A6B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FCE88BBD-9BBD-4871-B9B0-DE176D73A6B0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EDEF898A-CEFA-4151-8168-D0231A602093}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EDEF898A-CEFA-4151-8168-D0231A602093}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EDEF898A-CEFA-4151-8168-D0231A602093}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EDEF898A-CEFA-4151-8168-D0231A602093}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D817E3CE-F603-499B-B02A-7DECD017B170}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D817E3CE-F603-499B-B02A-7DECD017B170}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D817E3CE-F603-499B-B02A-7DECD017B170}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D817E3CE-F603-499B-B02A-7DECD017B170}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1534,7 +1553,6 @@ Global
{686BF57E-A6FF-467B-AAB3-44DE916A9772} = {D449D505-CC6A-4E0B-AF1B-976E2D0AE67A}
{1DDE89EE-5819-441F-A060-2FF4A986F372} = {D449D505-CC6A-4E0B-AF1B-976E2D0AE67A}
{655A5B07-39B8-48CD-8590-8AC0C2B708D8} = {8977A560-45C2-4EC2-A849-97335B382C74}
- {3D33BBFD-EC63-4E8C-A714-0A48A3809A87} = {BE25E872-1667-4649-9D19-96B83E75A44E}
{BFFB5CAE-33B5-447E-9218-BDEBFDA96CB5} = {8977A560-45C2-4EC2-A849-97335B382C74}
{FC32EF16-31B1-47B3-B625-A80933CB3F29} = {8977A560-45C2-4EC2-A849-97335B382C74}
{453C8E28-81D4-431E-BFB0-F3D413346E51} = {8DBA5174-B0AA-4561-82B1-A46607697753}
@@ -1619,11 +1637,16 @@ Global
{4D9D7A28-BB44-4F3F-81DA-14F39B853718} = {CC126D03-7EAC-493F-B187-DCDEE1EF6A70}
{5BABC440-4F1B-46E8-9068-DD7F02ED25D3} = {3E5FE3DB-45F7-4D83-9097-8F05D3B3AEC6}
{5762E483-75CE-4328-A410-511F30737712} = {3E5FE3DB-45F7-4D83-9097-8F05D3B3AEC6}
+ {6D819E80-BA2F-4317-8368-37F8F4434D3A} = {8977A560-45C2-4EC2-A849-97335B382C74}
{47D004BE-F797-430E-8A18-4B0CDFD56643} = {0F3118AE-8D36-4384-8E80-BD6566365305}
{DB96C25F-39A9-4A6A-92BC-D1E42717308F} = {47D004BE-F797-430E-8A18-4B0CDFD56643}
{64EADED3-4B5D-4431-BBE5-A4ABA1C38C00} = {D449D505-CC6A-4E0B-AF1B-976E2D0AE67A}
{730CADBA-701F-4722-9B6F-1FCC0DF2C95D} = {D449D505-CC6A-4E0B-AF1B-976E2D0AE67A}
{4E273CBC-BB1D-4AC1-91DB-C62FC83E0350} = {32A48625-F0AD-419D-828B-A50BDABA38EA}
+ {52ABB0E4-C3A1-4897-B51B-18EDA83F5D20} = {FD0FAF5F-1DED-485C-99FA-84B97F3A8EEC}
+ {FCE88BBD-9BBD-4871-B9B0-DE176D73A6B0} = {52ABB0E4-C3A1-4897-B51B-18EDA83F5D20}
+ {EDEF898A-CEFA-4151-8168-D0231A602093} = {52ABB0E4-C3A1-4897-B51B-18EDA83F5D20}
+ {D817E3CE-F603-499B-B02A-7DECD017B170} = {52ABB0E4-C3A1-4897-B51B-18EDA83F5D20}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {604E6B91-7BC0-4126-AE07-D4D2FEFC3D29}
diff --git a/azure-pipelines-integration-corehost.yml b/azure-pipelines-integration-corehost.yml
index 710a212c7e06c..fa6f2d32a9959 100644
--- a/azure-pipelines-integration-corehost.yml
+++ b/azure-pipelines-integration-corehost.yml
@@ -85,7 +85,6 @@ stages:
configuration: Debug
testRuns:
- oop64bit: true
- oopCoreClr: true
lspEditor: false
runName: VS_Integration_CoreHost_Debug
@@ -98,6 +97,5 @@ stages:
configuration: Release
testRuns:
- oop64bit: true
- oopCoreClr: true
lspEditor: false
runName: VS_Integration_CoreHost_Release
diff --git a/azure-pipelines-integration-lsp.yml b/azure-pipelines-integration-lsp.yml
index 1176304615af8..2fc29141eb936 100644
--- a/azure-pipelines-integration-lsp.yml
+++ b/azure-pipelines-integration-lsp.yml
@@ -71,6 +71,5 @@ stages:
configuration: Debug
testRuns:
- oop64bit: true
- oopCoreClr: false
lspEditor: true
runName: VS_Integration_LSP_Debug_64
diff --git a/azure-pipelines-integration-scouting.yml b/azure-pipelines-integration-scouting.yml
index edddff358055f..346f4dbfe0d38 100644
--- a/azure-pipelines-integration-scouting.yml
+++ b/azure-pipelines-integration-scouting.yml
@@ -48,11 +48,9 @@ stages:
configuration: Debug
testRuns:
- oop64bit: false
- oopCoreClr: false
lspEditor: false
runName: VS_Integration_Debug_32
- oop64bit: true
- oopCoreClr: false
lspEditor: false
runName: VS_Integration_Debug_64
@@ -64,10 +62,8 @@ stages:
configuration: Release
testRuns:
- oop64bit: false
- oopCoreClr: false
lspEditor: false
runName: VS_Integration_Release_32
- oop64bit: true
- oopCoreClr: false
lspEditor: false
runName: VS_Integration_Release_64
diff --git a/azure-pipelines-integration.yml b/azure-pipelines-integration.yml
index 8e9e05ea61b22..b3945c448b11b 100644
--- a/azure-pipelines-integration.yml
+++ b/azure-pipelines-integration.yml
@@ -83,11 +83,9 @@ stages:
testRuns:
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
- oop64bit: false
- oopCoreClr: false
lspEditor: false
runName: VS_Integration_Debug_32
- oop64bit: true
- oopCoreClr: false
lspEditor: false
runName: VS_Integration_Debug_64
@@ -99,11 +97,9 @@ stages:
configuration: Release
testRuns:
- oop64bit: false
- oopCoreClr: false
lspEditor: false
runName: VS_Integration_Release_32
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
- oop64bit: true
- oopCoreClr: false
lspEditor: false
runName: VS_Integration_Release_64
diff --git a/azure-pipelines-official.yml b/azure-pipelines-official.yml
index 3b713dea8d779..1a86360a0fcb0 100644
--- a/azure-pipelines-official.yml
+++ b/azure-pipelines-official.yml
@@ -45,7 +45,7 @@ variables:
value: .NETCoreValidation
- group: DotNet-Roslyn-SDLValidation-Params
- name: Codeql.Enabled
- value: true
+ value: true
# To retrieve OptProf data we need to authenticate to the VS drop storage.
# Get access token with $dn-bot-devdiv-drop-rw-code-rw and dn-bot-dnceng-build-rw-code-rw from DotNet-VSTS-Infra-Access
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 08aa4304783ab..7ea4ad03c07e3 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -55,9 +55,9 @@ variables:
- name: UbuntuQueueName
${{ if eq(variables['System.TeamProject'], 'public') }}:
- value: Build.Ubuntu.1804.Amd64.Open
+ value: Build.Ubuntu.2004.Amd64.Open
${{ else }}:
- value: Build.Ubuntu.1804.Amd64
+ value: Build.Ubuntu.2004.Amd64
- name: WindowsQueueName
${{ if eq(variables['System.TeamProject'], 'public') }}:
@@ -79,9 +79,9 @@ variables:
- name: HelixUbuntuQueueName
${{ if eq(variables['System.TeamProject'], 'public') }}:
- value: Ubuntu.1804.Amd64.Open
+ value: Ubuntu.2004.Amd64.Open
${{ else }}:
- value: Ubuntu.1804.Amd64
+ value: Ubuntu.2004.Amd64
- name: HelixMacOsQueueName
${{ if eq(variables['System.TeamProject'], 'public') }}:
@@ -148,15 +148,15 @@ stages:
# Like template `eng/common/templates/jobs/source-build.yml`
- job: Source_Build_Managed
displayName: Source-Build (Managed)
- container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
+ container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
- demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
+ demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
- demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
+ demands: ImageOverride -equals Build.Ubuntu.2204.Amd64
workspace:
clean: all
steps:
@@ -164,7 +164,7 @@ stages:
parameters:
platform:
name: 'Managed'
- container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8'
+ container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9'
- stage: Windows_Debug_Desktop
dependsOn: Windows_Debug_Build
@@ -423,7 +423,7 @@ stages:
steps:
- template: eng/pipelines/checkout-windows-task.yml
- - powershell: eng/make-bootstrap.ps1 -output $(bootstrapDir)
+ - powershell: eng/make-bootstrap.ps1 -output $(bootstrapDir) -ci
displayName: Build Bootstrap Compiler
- powershell: eng/test-determinism.ps1 -configuration Debug -bootstrapDir $(bootstrapDir) -ci
diff --git a/docs/Language Feature Status.md b/docs/Language Feature Status.md
index 4fbf571e12e5b..3ba66cf3fe790 100644
--- a/docs/Language Feature Status.md
+++ b/docs/Language Feature Status.md
@@ -10,15 +10,16 @@ efforts behind them.
| Feature | Branch | State | Developer | Reviewer | IDE Buddy | LDM Champ |
| ------- | ------ | ----- | --------- | -------- | --------- | --------- |
-| [Ref Struct Interfaces](https://github.com/dotnet/csharplang/issues/7608) | [RefStructInterfaces](https://github.com/dotnet/roslyn/tree/features/RefStructInterfaces) | [In Progress](https://github.com/dotnet/roslyn/issues/72124) | [AlekseyTs](https://github.com/AlekseyTs) | [cston](https://github.com/cston), [jjonescz](https://github.com/jjonescz) | | [agocke](https://github.com/agocke), [jaredpar](https://github.com/jaredpar) |
+| Ref/unsafe in iterators/async | [RefInAsync](https://github.com/dotnet/roslyn/tree/features/RefInAsync) | [In Progress](https://github.com/dotnet/roslyn/issues/72662) | [jjonescz](https://github.com/jjonescz) | [AlekseyTs](https://github.com/AlekseyTs), [cston](https://github.com/cston) | [ToddGrun](https://github.com/ToddGrun) | |
+| [Ref Struct Interfaces](https://github.com/dotnet/csharplang/issues/7608) | [RefStructInterfaces](https://github.com/dotnet/roslyn/tree/features/RefStructInterfaces) | [In Progress](https://github.com/dotnet/roslyn/issues/72124) | [AlekseyTs](https://github.com/AlekseyTs) | [cston](https://github.com/cston), [jjonescz](https://github.com/jjonescz) | [ToddGrun](https://github.com/ToddGrun) | [agocke](https://github.com/agocke), [jaredpar](https://github.com/jaredpar) |
| [Semi-auto-properties](https://github.com/dotnet/csharplang/issues/140) | [semi-auto-props](https://github.com/dotnet/roslyn/tree/features/semi-auto-props) | [In Progress](https://github.com/dotnet/roslyn/issues/57012) | [Youssef1313](https://github.com/Youssef1313) | [333fred](https://github.com/333fred), [RikkiGibson](https://github.com/RikkiGibson) | | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) |
| [Default in deconstruction](https://github.com/dotnet/roslyn/pull/25562) | [decon-default](https://github.com/dotnet/roslyn/tree/features/decon-default) | [In Progress](https://github.com/dotnet/roslyn/issues/25559) | [jcouv](https://github.com/jcouv) | [gafter](https://github.com/gafter) | | [jcouv](https://github.com/jcouv) |
-| [Roles/Extensions](https://github.com/dotnet/csharplang/issues/5497) | [roles](https://github.com/dotnet/roslyn/tree/features/roles) | [In Progress](https://github.com/dotnet/roslyn/issues/66722) | [jcouv](https://github.com/jcouv) | [AlekseyTs](https://github.com/AlekseyTs), [jjonescz](https://github.com/jjonescz) | | [MadsTorgersen](https://github.com/MadsTorgersen) |
+| [Roles/Extensions](https://github.com/dotnet/csharplang/issues/5497) | [roles](https://github.com/dotnet/roslyn/tree/features/roles) | [In Progress](https://github.com/dotnet/roslyn/issues/66722) | [jcouv](https://github.com/jcouv) | [AlekseyTs](https://github.com/AlekseyTs), [jjonescz](https://github.com/jjonescz) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [MadsTorgersen](https://github.com/MadsTorgersen) |
| [Escape character](https://github.com/dotnet/csharplang/issues/7400) | N/A | [Merged into 17.9p1](https://github.com/dotnet/roslyn/pull/70497) | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) | [jcouv](https://github.com/jcouv), [RikkiGibson](https://github.com/RikkiGibson) | | [CyrusNajmabadi](https://github.com/CyrusNajmabadi) |
| [Method group natural type improvements](https://github.com/dotnet/csharplang/blob/main/proposals/method-group-natural-type-improvements.md) | main | [Merged into 17.9p2](https://github.com/dotnet/roslyn/issues/69432) | [jcouv](https://github.com/jcouv) | [AlekseyTs](https://github.com/AlekseyTs), [cston](https://github.com/cston) | | [jcouv](https://github.com/jcouv) |
| [`Lock` object](https://github.com/dotnet/csharplang/issues/7104) | [LockObject](https://github.com/dotnet/roslyn/tree/features/LockObject) | [Merged into 17.10p2](https://github.com/dotnet/roslyn/issues/71888) | [jjonescz](https://github.com/jjonescz) | [cston](https://github.com/cston), [RikkiGibson](https://github.com/RikkiGibson) | | [stephentoub](https://github.com/stephentoub) |
| Implicit indexer access in object initializers | main | [Merged into 17.9p3](https://github.com/dotnet/roslyn/pull/70649) | [jcouv](https://github.com/jcouv) | [AlekseyTs](https://github.com/AlekseyTs), [cston](https://github.com/cston) | | |
-| [Params-collections](https://github.com/dotnet/csharplang/issues/7700) | main | [Merged to 17.10p3](https://github.com/dotnet/roslyn/issues/71137) | [AlekseyTs](https://github.com/AlekseyTs) | [RikkiGibson](https://github.com/RikkiGibson), [333fred](https://github.com/333fred) | | [MadsTorgersen](https://github.com/MadsTorgersen), [AlekseyTs](https://github.com/AlekseyTs) |
+| [Params-collections](https://github.com/dotnet/csharplang/issues/7700) | main | [Merged to 17.10p3](https://github.com/dotnet/roslyn/issues/71137) | [AlekseyTs](https://github.com/AlekseyTs) | [RikkiGibson](https://github.com/RikkiGibson), [333fred](https://github.com/333fred) | [akhera99](https://github.com/akhera99) | [MadsTorgersen](https://github.com/MadsTorgersen), [AlekseyTs](https://github.com/AlekseyTs) |
# C# 12.0
diff --git a/docs/compilers/CSharp/Compiler Breaking Changes - DotNet 8.md b/docs/compilers/CSharp/Compiler Breaking Changes - DotNet 8.md
index 21a6b0e2e4cb1..76b8741267d6e 100644
--- a/docs/compilers/CSharp/Compiler Breaking Changes - DotNet 8.md
+++ b/docs/compilers/CSharp/Compiler Breaking Changes - DotNet 8.md
@@ -35,7 +35,7 @@ public class C
*Conversion* of a collection expression to a `struct` or `class` that implements `System.Collections.IEnumerable` and *does not* have a `CollectionBuilderAttribute`
requires the target type to have an accessible constructor that can be called with no arguments and,
if the collection expression is not empty, the target type must have an accessible `Add` method
-that can be called with a single argument of [*iteration type*](https://github.com/dotnet/csharpstandard/blob/standard-v7/standard/statements.md#1395-the-foreach-statement) of the target type.
+that can be called with a single argument.
Previously, the constructor and `Add` methods were required for *construction* of the collection instance but not for *conversion*.
That meant the following call was ambiguous since both `char[]` and `string` were valid target types for the collection expression.
@@ -47,24 +47,6 @@ static void Print(char[] arg) { }
static void Print(string arg) { }
```
-Previously, the collection expression in `y = [1, 2, 3]` was allowed since construction only requires an applicable `Add` method for each element expression.
-The collection expression is now an error because of the conversion requirement for an `Add` method than be called with an argument of the iteration type `object`.
-```csharp
-// ok: Add is not required for empty collection
-MyCollection x = [];
-
-// error CS9215: Collection expression type must have an applicable instance or extension method 'Add'
-// that can be called with an argument of iteration type 'object'.
-// The best overloaded method is 'MyCollection.Add(int)'.
-MyCollection y = [1, 2, 3];
-
-class MyCollection : IEnumerable
-{
- public void Add(int i) { ... }
- IEnumerator IEnumerable.GetEnumerator() { ... }
-}
-```
-
## `ref` arguments can be passed to `in` parameters
***Introduced in Visual Studio 2022 version 17.8p2***
diff --git a/eng/Directory.Packages.props b/eng/Directory.Packages.props
index ea4b42a8e1785..45df3f9cf844a 100644
--- a/eng/Directory.Packages.props
+++ b/eng/Directory.Packages.props
@@ -117,8 +117,8 @@
-
-
+
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 262a1246aa41e..eb8c03c674abb 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -2,15 +2,15 @@
-
+
https://github.com/dotnet/source-build-externals
- b46b7e6859f4094cd7f3e00dc0471d62f5d8d051
+ bcd44732882bc2b81b30146c778eb6ccb7fea793
-
+
https://github.com/dotnet/source-build-reference-packages
- 8d6e9cf10f64ff8fc02e434b516f6ca87c4b7215
+ c0b5d69a1a1513528c77fffff708c7502d57c35c
@@ -110,14 +110,14 @@
-
+
https://github.com/dotnet/arcade
- 5c3fdd3b5aaaa32b24383ec12a60b37ebff13079
+ fc2b7849b25c4a21457feb6da5fc7c9806a80976
-
+
https://github.com/dotnet/arcade
- 5c3fdd3b5aaaa32b24383ec12a60b37ebff13079
+ fc2b7849b25c4a21457feb6da5fc7c9806a80976
@@ -144,9 +144,9 @@
https://github.com/dotnet/roslyn
5d10d428050c0d6afef30a072c4ae68776621877
-
+
https://github.com/dotnet/arcade
- 5c3fdd3b5aaaa32b24383ec12a60b37ebff13079
+ fc2b7849b25c4a21457feb6da5fc7c9806a80976
https://github.com/dotnet/roslyn-analyzers
diff --git a/eng/Versions.props b/eng/Versions.props
index ca2c67bff31aa..e15afb3c04ac0 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -6,9 +6,9 @@
-->
4
- 10
+ 11
0
- 3
+ 1
$(MajorVersion).$(MinorVersion).$(PatchVersion)
<_Audience Condition="'%(PkgDefBrokeredService.Audience)' == 'Process'">dword:00000001
<_Audience Condition="'%(PkgDefBrokeredService.Audience)' == 'RemoteExclusiveClient'">dword:00000100
@@ -231,7 +232,7 @@
<_PkgDefEntry Include="@(PkgDefBrokeredService)" Condition="'%(PkgDefBrokeredService.ProfferingPackageId)' == ''">
-
-
diff --git a/eng/targets/GenerateServiceHubConfigurationFiles.targets b/eng/targets/GenerateServiceHubConfigurationFiles.targets
index a19cb268d1d0d..977eb704777ce 100644
--- a/eng/targets/GenerateServiceHubConfigurationFiles.targets
+++ b/eng/targets/GenerateServiceHubConfigurationFiles.targets
@@ -10,32 +10,9 @@
-
- <_ServicesWithSuffix Include="@(ServiceHubService)" FileSuffix="64" HostIdSuffix="" />
- <_ServicesWithSuffix Include="@(ServiceHubService)" FileSuffix="64S" HostIdSuffix="S" />
-
-
-
-
-
-
-
-
-
+
<_ServicesWithSuffix Include="@(ServiceHubService)" FileSuffix="Core64" HostIdSuffix="" />
- <_ServicesWithSuffix Include="@(ServiceHubService)" FileSuffix="Core64S" HostIdSuffix="S" />
+ <_ServicesWithSuffix Include="@(ServiceHubService)" FileSuffix="Core64S" HostIdSuffix="S" />
diff --git a/eng/targets/Imports.targets b/eng/targets/Imports.targets
index 0fddfdc7a1a36..46eb0380702c3 100644
--- a/eng/targets/Imports.targets
+++ b/eng/targets/Imports.targets
@@ -208,6 +208,14 @@
+
+
+
+
+
diff --git a/eng/targets/Services.props b/eng/targets/Services.props
index 3712bf923d769..7a1dd4ad79358 100644
--- a/eng/targets/Services.props
+++ b/eng/targets/Services.props
@@ -44,6 +44,7 @@
+
-
-
-
diff --git a/eng/test-rebuild.ps1 b/eng/test-rebuild.ps1
index b6c52e0c349ec..05ebf1c658262 100644
--- a/eng/test-rebuild.ps1
+++ b/eng/test-rebuild.ps1
@@ -65,6 +65,10 @@ try {
" --exclude net472\Zip\tools\vsixexpinstaller\System.ValueTuple.dll" +
" --exclude net472\Zip\tools\vsixexpinstaller\VSIXExpInstaller.exe" +
+ # Semantic Search reference assemblies can't be reconstructed from source.
+ # The assemblies are not marked with ReferenceAssemblyAttribute attribute.
+ " --exclude net8.0\GeneratedRefAssemblies\Microsoft.CodeAnalysis.dll" +
+
" --debugPath `"$ArtifactsDir/BuildValidator`"" +
" --sourcePath `"$RepoRoot/`"" +
" --referencesPath `"$ArtifactsDir/bin`"" +
diff --git a/global.json b/global.json
index f323d2b0bb65e..c4eef31704d6b 100644
--- a/global.json
+++ b/global.json
@@ -12,8 +12,8 @@
"xcopy-msbuild": "17.8.1-2"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24161.1",
- "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24161.1",
+ "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24179.4",
+ "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24179.4",
"Microsoft.Build.Traversal": "3.4.0"
}
}
diff --git a/src/Analyzers/CSharp/Analyzers/UseCollectionExpression/UseCollectionExpressionHelpers.cs b/src/Analyzers/CSharp/Analyzers/UseCollectionExpression/UseCollectionExpressionHelpers.cs
index 9a08888a4ef41..a841e59061989 100644
--- a/src/Analyzers/CSharp/Analyzers/UseCollectionExpression/UseCollectionExpressionHelpers.cs
+++ b/src/Analyzers/CSharp/Analyzers/UseCollectionExpression/UseCollectionExpressionHelpers.cs
@@ -5,12 +5,14 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
+using System.Collections.ObjectModel;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading;
using Microsoft.CodeAnalysis.CSharp.Extensions;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Utilities;
+using Microsoft.CodeAnalysis.Operations;
using Microsoft.CodeAnalysis.PooledObjects;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Shared.Utilities;
@@ -106,6 +108,10 @@ public static bool CanReplaceWithCollectionExpression(
return false;
}
+ var operation = semanticModel.GetOperation(topMostExpression, cancellationToken);
+ if (operation?.Parent is IAssignmentOperation { Type.TypeKind: TypeKind.Dynamic })
+ return false;
+
// HACK: Workaround lack of compiler information for collection expression conversions with casts.
// Specifically, hardcode in knowledge that a cast to a constructible collection type of the empty collection
// expression will always succeed, and there's no need to actually validate semantics there.
@@ -209,7 +215,16 @@ bool IsSafeConversionWhenTypesDoNotMatch(out bool changesSemantics)
// `IEnumerable