danielscherzer / GLSL

VSIX Project that provides GLSL language integration.
258 stars 28 forks source link

Could not find the Microsoft.VisualC.CppClassifierProvider. Installing the C++ Visual Studio aspect should help. #43

Closed Yen closed 4 years ago

Yen commented 4 years ago

Installed product versions

Description

Error message doing almost anything "Could not find the Microsoft.VisualC.CppClassifierProvider. Installing the C++ Visual Studio aspect should help."

Steps to recreate

  1. Try and do most things (opening and viewing files)
  2. Message box with error

I believe this is related to this issue but not sure if this is a bug on their end or an API change required on yours.

danielscherzer commented 4 years ago

I assume you have installed the C++ aspect and it still does not work?

Yen commented 4 years ago

Believe it or not, the C++ aspect is installed. I didn't change any of the VS components before or after upgrading so I expect them to be the same, but if you know what specific C++ aspect may be missing then: image

I have done a full repair of the install to no avail. :(

danielscherzer commented 4 years ago

I can only guess what VS 2019 needs (I still use 2017), but on my Visual Studio I have installed the VC++ 2017 version 15.9 tools in the Compiler, Buildtools and runtime category and the Visual Studio C++ core features in the development activities category. I'm unsure if those are the required components and if the have the same naming in VS 2019, but these are the only C++ specific modules I have installed. Sorry! Despite this the extension installer should normally install all required dependencies automatically. In your case this seems not to be the case. The issue you posted in your first post sounds to me related. So if everything else fails I would recommend to sit it out till the next update for 2019 is out.

Cheers, Daniel

jasonb01 commented 4 years ago

CppClassifierProvider was an internal class that was recently deleted (renamed and then changed to a different type). Please don't use our internal undocumented functions.

danielscherzer commented 4 years ago

@jasonb01 thanks for the insider information! What is the recommended way of using a C++ syntax classifier? I was using it to do the heavy lifting of parsing all the C alike elements in glsl code.

jasonb01 commented 4 years ago

I'm sorry but there is no public API provided by VS available for this. What this code is doing by instantiating this on its own is confusing our language service and probably causing VS instability and memory leaks because our syntax classifier and our language service are tightly bound and not meant to be used as standalone components for arbitrary usage.

Unfortunately the recommendation is to roll your own lexer or use some other open source lexer and use it to power your own classifier. Another benefit of that will be that you will now have tight control over what your results are for the specific C dialect in question instead of our classifier that must work on all C dialects and probably produce extraneous results in your case of GLSL.

danielscherzer commented 4 years ago

Ok thanks. This will take a while to implement.

PcChip commented 4 years ago

well that's no good
I'll uninstall it to stop getting the error messages, and wish you the best of luck figuring out a workaround to that :\

danielscherzer commented 4 years ago

I implemented parsing with Sprache. Hopefully the extension works again. Please let me know! Cheers, Daniel

Yen commented 4 years ago

Looks good to me, thanks!

dbechrd commented 4 years ago

@danielscherzer Thank you sooo much for fixing this! This extension is extremely useful but the modal popups caused by this error were disastrous and forced me to uninstall it. Great to be able to use it again. <3