Skip to content

Latest commit

 

History

History
55 lines (34 loc) · 3.6 KB

CONTRIBUTING.md

File metadata and controls

55 lines (34 loc) · 3.6 KB

Local development

Pre-requisites

First install:

  • Node.js (v16.16 LTS is recommended).
  • Npm (The version shipped with node is fine, for example for v16.16.0 it would be 8.19.2)
  • .NET 7.0 SDK (dotnet should be on your path)

Build and run the extension

To run and develop the extension do the following:

  • Run npm i
  • Run npm i -g gulp
  • Run gulp installDependencies (this will download the various dependencies as specified by the version in the package.json)
  • Open in Visual Studio Code (code .)
  • Optional: run npm run watch, make code changes
  • Press F5 to debug

To test do the following: npm run test or F5 in VS Code with the "Launch Tests" debug configuration.

Using a locally developed Roslyn server

https://github.com/dotnet/roslyn contains the server implementation. Follow the instructions there to build the repo as normal. Once built, the server executable will be located in the build output directory, typically

$roslynRepoRoot/artifacts/bin/Microsoft.CodeAnalysis.LanguageServer/Debug/net7.0/Microsoft.CodeAnalysis.LanguageServer.exe

depending on which configuration is built. Then, launch the extension here and change the VSCode setting dotnet.server.path to point to the Roslyn executable path you built above and restart the language server.

If you need to debug the server, you can set the VSCode setting dotnet.server.waitForDebugger to true. This will trigger a Debugger.Launch() on the server side as it starts.

Using a locally developed Razor server

https://github.com/dotnet/razor contains the server implementation. Follow the instructions there to build the repo as normal. Once built, the server will be located in the build output directory, typically

$razorRepoRoot/artifacts/bin/rzls/Debug/net7.0

depending on which configuration is built. Then, launch the extension here and change the VSCode setting razor.languageServer.directory to point to the Razor executable path you built above and reload the window.

If you need to debug the server, you can set the VSCode setting razor.languageServer.debug to true. This will trigger a Debugger.Launch() on the server side as it starts. You can also set razor.trace to Verbose to get more log messages in the output window

Creating VSIXs

VSIXs can be created using the gulp command gulp vsix:release:package. This will create all the platform specific VSIXs that you can then install manually in VSCode.

Updating the Roslyn server version

To update the version of the roslyn server used by the extension do the following:

  1. Find the the Roslyn signed build you want from here. Typically the latest successful build of main is fine.
  2. In the official build stage, look for the Publish Assets step. In there you will see it publishing the Microsoft.CodeAnalysis.LanguageServer package with some version, e.g. 4.6.0-3.23158.4. Take note of that version number.
  3. In the package.json inside the defaults section update the roslyn key to point to the version number you found above in step 2.
  4. Build and test the change (make sure to run gulp installDependencies to get the new version!). If everything looks good, submit a PR.