Closed Veilenus closed 2 years ago
I'm also observing this after adding SG to my project, and did not test the detailed repro condition.
@Veilenus I see that SourceGenerator.csproj has the following:
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.10.0" />
This isn't the right package reference for a source generator. Can you try changing it to the following and let us know if the problem still occurs?
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.10.0" PrivateAssets="all" />
Hi Sam, thank you very much for your assistance, it's much appreciated! I've replaced the wrong package reference with the one suggested and the source generator's project file now looks as follows:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.10.0" PrivateAssets="all" />
</ItemGroup>
</Project>
I did also clean and rebuild the solution and restart Visual Studio several times after changing the package references. Unfortunately, the problem still occurs. The observed behavior is pretty much the same as depicted in the gif above.
After some more testing, I've found that syntax highlighting does indeed work as expected as long as the inspected class UserClass
is not changed. Changing it and, in turn, recreating the GeneratedClass
breaks the syntax highlighting again. Once changed, even rebuilding and / or restarting VS doesn't seem to fix the problem. I did, however, fix it temporarily by using git clean -xfd
on my local repository and then building the solution from scratch and restarting VS (again: this "fix" only lasts until UserClass
is changed). As a side note: It feels like reproducing the bug is somewhat harder since I changed the NuGet package, but it is still there.
Maybe one initial change to the inspected class is essential to reproducing the bug. I will add it to the reproduction steps.
Update: Upgrading to Visual Studio Enterprise 2022 17.0.0 seems to have solved the problem for me.
I wanted to get into Roslyn Source Generators and had some fun with the SourceGeneratorTemplate, just to get started. After a short while I noticed a problem I was not able to fix: Visual Studio's syntax highlighting seems partially broken by the generator, particularly by registering an
ISyntaxReceiver
(orISyntaxContextReceiver
which produces the same bug). Removing theSyntaxReceiver
brings back the expected syntax highlighting, but renders my generator useless.My demo generator's purpose is to generate a class (
GeneratedClass
) with a single method that returns the number of members of an inspected class (UserClass
). The original "SourceGeneratorTemplate" has been stripped down in order to provide a minimal reproducible example.I'm not sure whether this is a bug within Roslyn, Visual Studio or something else entirely. Please excuse me if this issue doesn't belong here. This is just my best guess.
Version Used:
Steps to Reproduce:
UserClass
.Program.cs
and modify code. Type in some syntax errors and remove them. Keep an eye on the syntax highlighting.Expected Behavior:
Actual Behavior: