-
Notifications
You must be signed in to change notification settings - Fork 676
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
Include Roslyn devkit dependencies in C# extension to avoid versioning issues with devkit #6681
Conversation
FYI @ryzngard |
577735a
to
617c330
Compare
…g issues with devkit
617c330
to
50c7e0e
Compare
args.push(extensionPath); | ||
} | ||
const clientRoot = __dirname; | ||
const devkitDepsPath = path.join( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same way we get the language server path
.gitignore
Outdated
@@ -3,6 +3,7 @@ obj | |||
node_modules | |||
out | |||
.roslyn/ | |||
.roslynDevkit/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should DevKit generally be a capitalized K if it's two words? Question applies to the PR in general. I mostly worry if a case sensitivity issue breaks us somewhere... 😄
tasks/offlinePackagingTasks.ts
Outdated
async function acquireRoslynDevkit(packageJSON: any, interactive: boolean): Promise<string> { | ||
const roslynVersion = packageJSON.defaults.roslyn; | ||
const packagePath = await acquireNugetPackage( | ||
`Microsoft.VisualStudio.LanguageServices.Devkit`, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Binary name is DevKit but the package name is Devkit?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Package name is DevKit actually, I'll fix. I think nuget ignores case on package names
https://dev.azure.com/azure-public/vside/_artifacts/feed/vs-impl/NuGet/Microsoft.VisualStudio.LanguageServices.DevKit/overview/4.9.0-2.23577.1
Requires server side change - dotnet/roslyn#70875
These optional devkit dependencies are currently shipped inside the devkit extension, but loaded into the language server process.
That makes it hard to use internal Roslyn APIs in these dependencies because:
This PR updates the C# extension to instead ship its own devkit dependencies. They are not loaded when using C# standalone. This allows us to use internal APIs in the devkit deps without requiring a devkit version update each time they change.
We considered a runtime download of the devkit dependencies (similar to how O# is acquired), but the size of the dependencies (small, around 2 MB) and the complexity of publishing to a CDN led us to this approach.
Resolves dotnet/roslyn#69467
TODO - Draft until server side change goes in.