dotnet / razor

Compiler and tooling experience for Razor ASP.NET Core apps in Visual Studio, Visual Studio for Mac, and VS Code.
https://asp.net
MIT License
499 stars 191 forks source link

CLaSP: Create a VSIX Package for CLaSP #6904

Open ryanbrandenburg opened 2 years ago

ryanbrandenburg commented 2 years ago

By distributing CLaSP Framework in VS as a VSIX package we can ensure that everyone can import the same DLL without having to rely on other workloads to provide it. This ties people to the VS version for breaking changes, but enables use to avoid duplicating DLL's and makes sure NGEN works (NGEN images for a DLL in one location don't work for other copies of that DLL, even if they're identical).

CC @ToddGrun and @jimmylewis who brought this up.

ryanbrandenburg commented 2 years ago

We can also mitigate the breaking changes stuff by including the pre-breaking versions in the VSIX as well (StreamJsonRpc does this), though I would imagine we don't want to collect more than 2-3.

DustinCampbell commented 2 years ago

FWIW, the multiple version trick that we use for StreamJsonRpc and Newtonsoft.Json in VS is a bit oogy. It might be better to allow the API to settle before allowing others to pick it up in VS.

ryanbrandenburg commented 2 years ago

It might be better to allow the API to settle before allowing others to pick it up in VS.

This will probably end up being the plan just by default. I imagine that we'll run the API review before doing this work, which we'll do before doing outreach to other teams about helping them move to CLaSP.

ryanbrandenburg commented 1 year ago

The VSIX should binding redirect the version surrounding breaking changes to to the latest version which doesn't contain the breaking change. The LSP protocol DLLs are an example of this kind of system. Likely we should only ever have ~2 versions at a time.

ryanbrandenburg commented 1 year ago

Dependent on https://github.com/dotnet/razor/issues/8145.