Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add repo files to Roslyn.sln and Compilers.sln as solution items #59328

Conversation

jmarolf
Copy link
Contributor

@jmarolf jmarolf commented Feb 7, 2022

Visual Studio now has a built-in language service for azure-pipelines and auto-indexes the text for items added to the solution.

This PR adds these additional files to the solution with the following layout

image

Full file listing here:

│   .editorconfig
│   .vsconfig
│
├───docs
│   │   Adding Optional Parameters in Public API.md
│   │   area-owners.md
│   │   Breaking API Changes.md
│   │   Language Feature Status.md
│   │   README.md
│   │
│   ├───analyzers
│   │       Analyzer Actions Semantics.md
│   │       Analyzer Samples.md
│   │       DiagnosticSuppressorDesign.md
│   │       FixAllProvider.md
│   │       Localizing Analyzers.md
│   │       Report Analyzer Format.md
│   │       Using Additional Files.md
│   │
│   ├───compilers
│   │   │   analyzer-config.md
│   │   │   Boolean Representation.md
│   │   │   Co-located core types.md
│   │   │   Compiler Server.md
│   │   │   Compiler Toolset NuPkgs.md
│   │   │   Deterministic Inputs.md
│   │   │   Error Log Format.md
│   │   │   Extension Methods in Aliased Assemblies.md
│   │   │   Interactive Imports.md
│   │   │   IOperation Test Hook.md
│   │   │   README.md
│   │   │   Rule Set Format.md
│   │   │   terrapin.md
│   │   │
│   │   ├───API Notes
│   │   │       10-29-19.md
│   │   │       4-15-20.md
│   │   │       6-11-20.md
│   │   │       8-19-20.md
│   │   │       9-30-19.md
│   │   │
│   │   ├───CSharp
│   │   │       CodeGen Differences.md
│   │   │       COM Interop.md
│   │   │       CommandLine.md
│   │   │       Compiler Breaking Changes - DotNet 5.md
│   │   │       Compiler Breaking Changes - DotNet 6.md
│   │   │       Compiler Breaking Changes - DotNet 7.md
│   │   │       Compiler Breaking Changes - post DotNet 5.md
│   │   │       Compiler Breaking Changes - post VS2017.md
│   │   │       Compiler Breaking Changes - post VS2019.md
│   │   │       Compiler Breaking Changes - VS2015.md
│   │   │       Compiler Breaking Changes - VS2017.md
│   │   │       Compiler Breaking Changes - VS2019.md
│   │   │       Definite Assignment And Dynamic.md
│   │   │       Definite Assignment And Partials.md
│   │   │       Definite Assignment.md
│   │   │       Expression Breakpoints.md
│   │   │       Indexed Property Access.md
│   │   │       Internal Access.md
│   │   │       Multiple Inheritance Lookup Ambuguity.md
│   │   │       Nullability Public API Design Notes.md
│   │   │       Overload Resolution.md
│   │   │       readme.md
│   │   │       Source-Metadata Conflict.md
│   │   │       Static Type Constraints.md
│   │   │       System.TypedReference.md
│   │   │       Unicode Version.md
│   │   │       Warnversion Warning Waves.md
│   │   │       Win32 Resources.md
│   │   │       __arglist.md
│   │   │
│   │   ├───Design
│   │   │       Bound Node Design.md
│   │   │       Closure Conversion.md
│   │   │       Editor Config.md
│   │   │       Parser.md
│   │   │       README.md
│   │   │       Unexpected Conditions.md
│   │   │
│   │   ├───Dynamic Analysis
│   │   │       MetadataFormat.md
│   │   │
│   │   └───Visual Basic
│   │           Clashing Enum Members.md
│   │           CommandLine.md
│   │           Compiler Breaking Changes - post VS2017.md
│   │           Compiler Breaking Changes - post VS2019.md
│   │           Compiler Breaking Changes - VS2015.md
│   │           Compiler Breaking Changes - VS2019.md
│   │           Overflow In Embedded Runtime.md
│   │
│   ├───contributing
│   │       API Review Process.md
│   │       Building, Debugging, and Testing on Unix.md
│   │       Building, Debugging, and Testing on Windows.md
│   │       Compiler Test Plan.md
│   │       Developing a Language Feature.md
│   │       Documentation for IDE CodeStyle analyzers.md
│   │       IDE Test Plan.md
│   │       Nullable Annotations.md
│   │       Powershell Guidelines.md
│   │
│   ├───features
│   │   │   async-main.md
│   │   │   async-main.test.md
│   │   │   async-streams.md
│   │   │   deconstruction.md
│   │   │   DefaultInterfaceImplementation.md
│   │   │   discards.md
│   │   │   dynamic-analysis.work.md
│   │   │   enhanced-using.md
│   │   │   ExperimentalAttribute.md
│   │   │   ExpressionVariables.md
│   │   │   generators.md
│   │   │   GlobalUsingDirective.md
│   │   │   incremental-generators.md
│   │   │   local-functions.md
│   │   │   local-functions.test.md
│   │   │   local-functions.work.md
│   │   │   NativeIntegerAttribute.md
│   │   │   nullable-metadata.md
│   │   │   nullable-reference-types.md
│   │   │   outvar.md
│   │   │   patterns.md
│   │   │   patterns.work.md
│   │   │   pdb-compilation-options.md
│   │   │   private-protected.md
│   │   │   private-protected.work.md
│   │   │   readonly-instance-members.md
│   │   │   records.md
│   │   │   records.work.md
│   │   │   ref-reassignment.md
│   │   │   refout.md
│   │   │   sdk.md
│   │   │   skiplocalsinit.md
│   │   │   source-generators.cookbook.md
│   │   │   source-generators.md
│   │   │   StaticAbstractMembersInInterfaces.md
│   │   │   task-types.md
│   │   │   throwexpr.md
│   │   │   TopLevelStatements.md
│   │   │   tuples.md
│   │   │   UsedAssemblyReferences.md
│   │   │   wildcards.work.md
│   │   │
│   │   └───img
│   │           install-valuetuple.png
│   │
│   ├───ide
│   │   │   external-access.md
│   │   │   glossary.md
│   │   │   README.md
│   │   │
│   │   ├───api-designs
│   │   │       Workspace and Source Generated Documents.md
│   │   │
│   │   └───test-plans
│   │           source-generators.md
│   │
│   ├───infrastructure
│   │       cross-platform.md
│   │       feature branches azure.md
│   │       msbuild.md
│   │
│   ├───specs
│   │   │   PortablePdb-Metadata.md
│   │   │
│   │   └───CSharp 6
│   │           Better Betterness.md
│   │
│   └───wiki
│           API-Changes.md
│           Branch-Cleanup.md
│           Building-Testing-and-Debugging.md
│           C#-Interactive-Walkthrough.md
│           Changelog-for-C#-and-VB-compilers.md
│           Compiler-Queries.md
│           Compiler-release-process.md
│           Compiler-supporting-types.md
│           Contributing-Code.md
│           Diagnosing-Project-System-Build-Errors.md
│           EnC-Supported-Edits.md
│           FAQ.md
│           Getting-Started-C#-Semantic-Analysis.md
│           Getting-Started-C#-Syntax-Analysis.md
│           Getting-Started-C#-Syntax-Transformation.md
│           Getting-Started-on-Visual-Studio-2015-CTP-5.md
│           Getting-Started-on-Visual-Studio-2015-CTP-6.md
│           Getting-Started-on-Visual-Studio-2015-Preview.md
│           Getting-Started-on-Visual-Studio-2015-RC.md
│           Getting-Started-on-Visual-Studio-2015.md
│           Getting-Started-VB-Semantic-Analysis.md
│           Getting-Started-VB-Syntax-Analysis.md
│           Getting-Started-VB-Syntax-Transformation.md
│           Getting-Started-Writing-a-Custom-Analyzer-&-Code-Fix.md
│           How-To-Investigate-CI-Test-Failures.md
│           How-to-support-new-C#-language-features-by-Edit-And-Continue-(ENC).md
│           How-To-Write-a-C#-Analyzer-and-Code-Fix.md
│           How-To-Write-a-Visual-Basic-Analyzer-and-Code-Fix.md
│           Interactive-Window.md
│           Labels-used-for-issues.md
│           Languages-features-in-C#-6-and-VB-14.md
│           Linux-Instructions.md
│           Manual-Testing.md
│           Measuring-Compiler-Performance.md
│           New-Language-Features-in-C#-6.md
│           New-Language-Features-in-VB-14.md
│           Notes-on-formatting.md
│           Notes-on-nullability.md
│           NuGet-packages.md
│           Performance-considerations-for-large-solutions.md
│           Performance-Investigations.md
│           README.md
│           Recording-performance-traces-with-PerfView.md
│           Reporting-Visual-Studio-crashes-and-performance-issues.md
│           Responding-to-customers-encountering-crashes-or-performance-issues.md
│           Roadmap.md
│           Roslyn-Overview.md
│           Runtime-code-generation-using-Roslyn-compilations-in-.NET-Core-App.md
│           Samples-and-Walkthroughs.md
│           Scripting-API-Samples.md
│           Syntax-Visualizer.md
│           Troubleshooting-tips.md
│           VS-2015-CTP-5-API-Changes.md
│           VS-2015-CTP-6-API-Changes.md
│           VS-2015-RC-API-Changes.md
│           Walkthroughs.md
│
├───eng
│   │   dotnet-tools.json
│   │   global.json
│   │   InternalTools.props
│   │   Publishing.props
│   │   Signing.props
│   │   SourceBuild.props
│   │   SourceBuildPrebuiltBaseline.xml
│   │   Tools.props
│   │   Version.Details.xml
│   │   Versions.props
│   │
│   └───config
│       │   app.manifest
│       │   BannedSymbols.txt
│       │   OptProf.json
│       │   PublishData.json
│       │   runtimeconfig.template.json
│       │   xunit.runner.json
│       │
│       ├───globalconfigs
│       │       Common.globalconfig
│       │       NonShipping.globalconfig
│       │       Shipping.globalconfig
│       │
│       └───test
│           │   BannedSymbols.txt
│           │
│           ├───Core
│           │       InstallTraceListener.cs
│           │
│           └───Desktop
│                   app.config
│
├───msbuild
│   │   Directory.Build.props
│   │   Directory.Build.rsp
│   │   Directory.Build.targets
│   │   NuGet.config
│   │
│   └───targets
│           Bootstrap.props
│           Bootstrap.targets
│           DiaSymReaderNative.targets
│           GenerateCompilerExecutableBindingRedirects.targets
│           GeneratePkgDef.targets
│           GenerateServiceHubConfigurationFiles.targets
│           ILAsm.targets
│           ILDAsm.targets
│           Imports.targets
│           PackageProject.props
│           PackageProject.targets
│           README.md
│           Services.props
│           Settings.props
│           VisualStudio.targets
│           Vsdconfig.targets
│           XUnit.targets
│
├───pipelines
│   │   azure-pipelines-integration-corehost.yml
│   │   azure-pipelines-integration-dartlab.yml
│   │   azure-pipelines-integration-lsp.yml
│   │   azure-pipelines-integration.yml
│   │   azure-pipelines-official.yml
│   │   azure-pipelines-pr-validation.yml
│   │   azure-pipelines-richnav.yml
│   │   azure-pipelines.yml
│   │
│   └───templates
│           build-unix-job.yml
│           build-windows-job.yml
│           checkout-unix-task.yml
│           checkout-windows-task.yml
│           insert.yml
│           publish-logs.yml
│           test-integration-job.yml
│           test-unix-job-single-machine.yml
│           test-unix-job.yml
│           test-windows-job-single-machine.yml
│           test-windows-job.yml
│
├───repo
│       CODE-OF-CONDUCT.md
│       CONTRIBUTING.md
│       README.md
│       SECURITY.md
│
└───scripts
    │   Build.cmd
    │   build.sh
    │   Restore.cmd
    │   restore.sh
    │   Test.cmd
    │   test.sh
    │   Verify.cmd
    │   verify.sh
    │
    ├───continuous-integration
    │       build-utils-win.ps1
    │       build-utils.ps1
    │       build.ps1
    │       build.sh
    │       cibuild.sh
    │       findibc.ps1
    │       generate-compiler-code.cmd
    │       generate-compiler-code.ps1
    │       prepare-tests.ps1
    │       prepare-tests.sh
    │       publish-assets.ps1
    │       setup-pr-validation.ps1
    │       test-build-correctness.cmd
    │       test-build-correctness.ps1
    │       test-determinism.cmd
    │       test-determinism.ps1
    │       test-rebuild.ps1
    │
    └───utility
        │   all-ci-times.xlsx
        │   build_mono.sh
        │   check-for-loc-changes.cmd
        │   check-for-loc-changes.ps1
        │   cleanup_perf.ps1
        │   crossgen.sh
        │   edit-designers.ps1
        │   generate-badges.ps1
        │   merge-vs-deps.ps1
        │   README.md
        │   report-ci-times.ps1
        │   run_perf.ps1
        │   sort-unshipped.cmd
        │   test-nuget-cache.ps1
        │   vscode-build.ps1
        │   vscode-run-tests.ps1
        │
        ├───GenerateSdkPackages
        │       base.nuspec
        │       files.txt
        │       make-all.ps1
        │       README.md
        │
        ├───PublicApi
        │       mark-shipped.cmd
        │       mark-shipped.ps1
        │       README.md
        │
        └───UploadAzureZip
                CreateAndUploadNugetZip.ps1
                UploadPerfProject.ps1

NOTE: if we don't want to take this change we may still want this: cf44e8b which ensures that Compilers.sln and Roslyn.sln have the same set of solution items

Copy link
Member

@sharwell sharwell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This functionality is built into Solution Explorer, even if the files are not added to the solution file. Adding the files to the solution is worse because it adds a long-term maintenance requirement.

Here's the normal view of a solution:

image

And here's a toggle that shows the files:

image

In Visual Studio 2017 (intentionally chosen for these screenshots due to particularly high level of polish this feature had in that release), this button was a single-click toggle that immediately switched between file view and project view. In newer releases, the button is much more tedious (multiple clicks in different locations), but still serves the same intent. If we have a problem with the built-in feature, we should work with the editor to make the experience more usable and not penalize the solution file itself.

@jmarolf
Copy link
Contributor Author

jmarolf commented Feb 7, 2022

This functionality is built into Solution Explorer, even if the files are not added to the solution file.

This is not true, this is never how this has worked for solution files, only project files.

Adding the files to the solution is worse because it adds a long-term maintenance requirement.

This is a good argument. Since 16.9 (about a year of changes)

we've added/remove/renamed 33 files.
> git diff --name-only --diff-filter=ARD upstream/release/dev16.9-vs-deps..HEAD -- ":!eng/common" ":!eng/source-build-patches" ":!src" ":!.vscode" ":!.devcontainer" ":!.github" ":!.git-blame-ignore-revs"
Verify.cmd
azure-pipelines-integration-corehost.yml
azure-pipelines-integration-dartlab.yml
azure-pipelines-integration-lsp.yml
azure-pipelines-pr-validation.yml
docs/analyzers/DiagnosticSuppressorDesign.md
docs/area-owners.md
docs/compilers/CSharp/Compiler Breaking Changes - DotNet 6.md
docs/compilers/CSharp/Compiler Breaking Changes - DotNet 7.md
docs/compilers/CSharp/Compiler Breaking Changes - post DotNet 5.md
docs/compilers/CSharp/readme.md
docs/compilers/IOperation Test Hook.md
docs/compilers/terrapin.md
docs/contributing/API Review Process.md
docs/features/GlobalUsingDirective.md
docs/features/StaticAbstractMembersInInterfaces.md
docs/features/UsedAssemblyReferences.md
docs/features/incremental-generators.md
docs/ide/external-access.md
eng/Publishing.props
eng/SourceBuild.props
eng/SourceBuildPrebuiltBaseline.xml
eng/Tools.props
eng/docker/Mono/Dockerfile
eng/docker/mono.sh
eng/pipelines/insert.yml
eng/pipelines/test-integration-job.yml
eng/targets/ILAsm.targets
eng/targets/ILDAsm.targets
eng/targets/PackageProject.props
eng/test-rebuild.ps1
eng/update-build-number.ps1
verify.sh
which was done across 36 commits.
> git log --format=format:"|%as | %s | [%h](https://github.com/dotnet/roslyn/commit/%h) |" --diff-filter=ARD upstream/release/dev16.9-vs-deps..HEAD -- ":!eng/common" ":!eng/docker" ":!eng/source-build-patches" ":!src" ":!.vscode" ":!.devcontainer" ":!.github" ":!.git-blame-ignore-revs"
Date Created Title SHA
2021-12-20 Fix incremental build failure for package projects 1bc95daa25c
2021-12-03 Add scripts to verify if a branch is ready to review a70dcf9cdf4
2021-11-17 Create azure-pipelines-integration-dartlab.yml 211aee2f6fc
2021-10-18 Add ServiceHub core host integration test CI ee8f892b6f8
2021-10-14 Add breaking changes doc for .NET 7 (#57152) a38a57d287f
2021-10-14 Document break for negative Length tests ac4fef2249f
2021-10-04 Create DiagnosticSuppressorDesign.md 895327639cf
2021-09-07 Add readme.md listing breaking changes doc chronologically (#56019) ec20540d1ac
2021-08-21 Disallow nullable suppression in patterns (#54072) 8bc4c143c0b
2021-08-19 Remove format scripts 1741dddf6dd
2021-08-18 Restore dotnet-format local tool and add helper scripts 45f01f2e5fe
2021-08-04 Add incremental generator specification (#55274) 72885f42240
2021-07-23 Add template for insertion creation and use for pr val 8f85797753a
2021-06-17 Remove set build number stage from official build 8514bd298b5
2021-06-17 Remove set build number stage from official build ddb7144776c
2021-06-15 Remove azdo org conditions from yml files 92b73ffdc45
2021-06-11 Move PR validation logic from the official build to a separate yml e45bcd0e30b
2021-05-27 Add API Review Process Documentation (#53396) d72f606222d
2021-05-03 Add external access doc. 3f25651eacc
2021-05-03 Add external access doc. 268f94d2707
2021-05-03 Use Arcade v3 publishing 9705ec79245
2021-04-21 ArPow stage 1: local source-build infrastructure (#51765) 2e0058d14cf
2021-04-02 Allow abstract and sealed modifiers on static methods/properties/events in interfaces. (#52228) ff59bc04bb6
2021-03-30 Move to Arcade 6 bc7724eed83
2021-03-08 Document breaking change for #46044 (#51070) 9e430675dad
2021-03-03 Add documentation for the IOperation test hook. (#51599) 6da1274c9d2
2021-03-01 Document state storage refactoring follow-up (#51569) d452bf32f27
2021-03-01 EnC support for source-generated files (#51526) af7a90f6404
2021-02-25 Rebuild as many projects as possible (#51427) 9438f749749
2021-02-18 Add a feature doc for "Global Using Directive". (#51309) af46c0a75a3
2021-02-18 Initial draft of the Terrapin plan (#49886) 60c8eb664ea
2021-02-17 Rebuild Microsoft.CodeAnalysis (#50968) bf2a49d13b5
2021-02-12 Remove benchmarks 249c654d83f
2021-01-25 Print storage location b7711fd6b89
2021-01-05 Add new integration test pipeline a16ad35a715
2019-11-19 Beginning of work on "Used Assembly References" feature. (#39807) c5bc1e029b1
in 32 pull requests
Title Date Merged PR
Beginning of work on "Used Assembly References" feature. 11/19/2019 39807
Initial draft of the Terrapin plan 02/18/2021 49886
Add feature flag to allow VS to use the LSP based editor 03/03/2021 49996
Provide a new implementation of IPersistenceService that sits on top of the new platform 'cloud cache' system. 03/09/2021 50762
Rebuild Microsoft.CodeAnalysis 02/17/2021 50968
Document breaking change for #46044 03/09/2021 51070
Add a feature doc for "Global Using Directive". 02/19/2021 51309
Rebuild as many projects as possible 02/26/2021 51427
EnC support for source-generated files 03/01/2021 51526
Document state storage refactoring follow-up 03/01/2021 51569
Add documentation for the IOperation test hook. 03/03/2021 51599
ArPow stage 1: local source-build infrastructure 04/21/2021 51765
Allow abstract and sealed modifiers on static methods/properties/events in interfaces. 04/02/2021 52228
Move to Arcade 6 04/12/2021 52255
[main] Update dependencies from dotnet/arcade 05/04/2021 52766
Add OmniSharp ExternalAccess 05/04/2021 52907
Add API Review Process Documentation 05/27/2021 53396
Move PR validation logic from the official build to a separate yml 06/17/2021 54053
Disallow nullable suppression in patterns 08/20/2021 54072
Update Inline Errors feature branch 06/17/2021 54181
Merge release/dev17.0-vs-deps to main 07/23/2021 55030
Add template for insertion creation and use for pr val 07/29/2021 55094
Add incremental generator specification 08/04/2021 55274
Update Arcade and require .NET 6 Preview 7 SDK 08/19/2021 55681
Add readme.md listing breaking changes doc chronologically 09/07/2021 56019
Create DiagnosticSuppressorDesign.md 10/05/2021 56944
Document break for negative Length tests 10/17/2021 57149
Add breaking changes doc for .NET 7 10/14/2021 57152
Add ServiceHub core host integration test CI 10/22/2021 57228
Add VS integration test pipeline 12/01/2021 57953
Add scripts to verify if a branch is ready to review 12/04/2021 58110
Fix incremental build failures 01/04/2022 58429

tl;dr: we've had a pr to remove/add/rename one of these files ~1.3 times a month in the past year. So we should ask ourselves if this maintenance is too much. If we, as a team, think this is too much I am happy to close.

In Visual Studio 2017 (intentionally chosen for these screenshots due to particularly high level of polish this feature had in that release), this button was a single-click toggle that immediately switched between file view and project view. In newer releases, the button is much more tedious (multiple clicks in different locations), but still serves the same intent.

So your argument is that we should move to VS 2017 :)

"Show all Files" only exists for items underneath a project. That feature has never been able to show files in a repo. This is what shows if you enable that option in the roslyn repo.

image

It does not include the docs folder, the eng folder or any of our top-level files. We could move all of these files under a project of some sort but that seems very odd to me. Generally, "Solution Items" is how this is accomplished in Visual Studio.

For files that do exist under a project I can certainly see the argument of not having them visible but instead relying on "Show all Files."

If we have a problem with the built-in feature, we should work with the editor to make the experience more usable and not penalize the solution file itself.

I agree we should file feedback about this, but it sounds like your position is that we should have no solution items? Is the feature you want to ask for "Show-all-Files shows all files in the same folder as the solution and their sub-directories?"

@JoeRobich
Copy link
Member

Is the feature you want to ask for "Show-all-Files shows all files in the same folder as the solution and their sub-directories?"

Sounds like a feature I would want.

@sharwell
Copy link
Member

sharwell commented Feb 7, 2022

@jmarolf The feature here is not Show All FIles. It's a different button:

image

Switching to folder view via that button, you get this:

image

@jmarolf
Copy link
Contributor Author

jmarolf commented Feb 9, 2022

Reflected on this @sharwell and I think I agree. Most I'll do here is update contributing docs to point out that VS has language service support for azdo pipelines etc. So you should get used to switching to folder view for that. I think we can both agree there are issues with the folder view but lets try and get the team to fix those first.

@jmarolf jmarolf closed this Feb 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants