A Visual Studio Code extension that provides rich language support for C# and is shipped along with C# Dev Kit. Powered by a Language Server Protocol (LSP) server, this extension integrates with open source components like Roslyn and Razor to provide rich type information and a faster, more reliable C# experience.
While it is possible to use the C# extension as a standalone extension, we highly recommend using C# Dev Kit.
- Installing C# Dev Kit will automatically install this extension as a required dependency.
- Open a folder/workspace that contains a C# project (.csproj) and a C# solution (.sln) and the extension will activate.
- Whether you install C# Dev Kit or just the C# extension, the .NET Install Tool will be installed as a dependency.
Note: If working on a solution that requires versions prior to .NET 6 or non-solution based projects, install a .NET Framework runtime and MSBuild tooling.
- Set omnisharp.useModernNet to false and set dotnet.server.useOmnisharp to true
- Uninstall or disable C# Dev Kit
- Windows: .NET Framework along with MSBuild Tools
- MacOS/Linux: Mono with MSBuild
Learn more about the rich features of the C# extension:
- Refactoring: Edit your code with code fixes and refactorings
- Navigation: Explore and navigate your code with features like Go To Definition and Find All References
- IntelliSense: Write code with auto-completion
- Formatting and Linting: Format and lint your code
For more information you can:
- Follow our C# tutorial with step-by-step instructions for building a simple app.
- Check out the C# documentation on the VS Code site for general information about using the extension.
If you don’t want to take advantage of the great Language Server features, you can revert back to using OmniSharp by going to the Extension settings and setting dotnet.server.useOmnisharp
to true. Next, uninstall or disable C# Dev Kit. Finally, restart VS Code for this to take effect.
To file a new issue:
- Open the Command Palette with Ctrl+Shift+P (Cmd+Shift+P on macOS), type "Open Settings (UI)", and press Enter.
- Search for "trace" in the search bar. Under "Dotnet > Server: Trace" select "Trace" from the drop down. This will provide more output information.
- Reload the window by opening the Command Palette with Ctrl+Shift+P (Cmd+Shift+P on macOS), type "Reload Window", and press Enter.
- Next, check the C# logs in the Output Window by opening it with Ctrl+Shift+U (Cmd+Shift+U on macOS), and select C# from the dropdown.
- Select and copy all the text in the log, and then report the issue through VS Code.
- Open the Command Palette with Ctrl+Shift+P (Cmd+Shift+P on macOS), type “CSharp: Report an issue”, and press Enter.
- This will open a window with all the necessary information related to the C# extension, dotnet version, mono version, etc.
- Paste the previously copied C# log into the “Steps to Reproduce” field. Please also include a description of what you were doing/attempting to do at the time the problem occurred.
- Click the “Preview on GitHub” button, and then file the issue.
Alternatively, you could visit https://github.com/dotnet/vscode-csharp/issues and file a new issue there.
Copyright © .NET Foundation, and contributors.
The Microsoft C# extension is subject to these license terms. The source code to this extension is available on https://github.com/dotnet/vscode-csharp and licensed under the MIT license.
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.
By signing the CLA, the community is free to use your contribution to .NET Foundation projects.
This project is supported by the .NET Foundation.
Provide feedback File questions, issues, or feature requests for the extension.
Known issues If someone has already filed an issue that encompasses your feedback, please leave a 👍 or 👎 reaction on the issue to upvote or downvote it to help us prioritize the issue.
Quick survey Let us know what you think of the extension by taking the quick survey.