You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A single nuget package can contain multiple Roslyn analyzers with same content but different Roslyn versions.
This is to support older versions of Roslyn users.
Currently, this seems to be a problem in some cases.
For example, if we install System.Text.Json with NuGetForUnity, source generators x3 with the same content are imported.
System.Text.Json 8.0.1/
└── analyzers/
└── dotnet/
├── roslyn3.11/
│ └── cs/
│ └── System.Text.Json.SourceGeneration.dll < For Roslyn 3.11 or newer
├── roslyn4.0/
│ └── cs/
│ └── System.Text.Json.SourceGeneration.dll < For Roslyn 4.0 or newer
└── roslyn4.4/
└── cs/
└── System.Text.Json.SourceGeneration.dll < For Roslyn 4.4 or newer
I tried the following simple System.Text.Json Source Generator example, getting errors.
This is because multiple SourceGenerators with the same contents are run.
[Describe the issue you have. If applicable provide logs produced by enabeling verbose logging in the NuGetForUnity settings.]
NuGet Package: System.Text.Json
NuGetForUnity Version: 4.0.2
Unity Version: 2022.2.21f, etc
Operating System: macOS
Improvement proposal
This problem can be solved by limiting the number of dlls with the RoslynAnalyzer asset label to one.
Currently, analzyer is disable on any platform, so doing this was sufficient.
So, why not pick one analyzer that can be used in the target Unity editor and change it to only put RoslynAnalyzer there?
According to our research, the analyzer/source generator versions that work with Unity are as follows.
(You can find the Microsoft.CodeAnalysis.CSharp.dll bundled in a folder called DotNetSdkRoslyn in the Unity editor application, so you can check the version.)
Unity 2022.3.12f or newer: 4.3.0
Unity 2022.2 or newer: 4.1.0
Unity 2021.2 or newer: 3.8.0
I have implemented this in #616 and would appreciate your confirmation. Thanks!
The text was updated successfully, but these errors were encountered:
Unity documentation at https://docs.unity3d.com/Manual/roslyn-analyzers.html says Your source generator must use Microsoft.CodeAnalysis 3.8 to work with Unity even for 2022 and 2023 versions. Do you think their documentation is wrong on this account?
Description
A single nuget package can contain multiple Roslyn analyzers with same content but different Roslyn versions.
This is to support older versions of Roslyn users.
Currently, this seems to be a problem in some cases.
For example, if we install
System.Text.Json
with NuGetForUnity, source generators x3 with the same content are imported.I tried the following simple System.Text.Json Source Generator example, getting errors.
This is because multiple SourceGenerators with the same contents are run.
[Describe the issue you have. If applicable provide logs produced by enabeling verbose logging in the NuGetForUnity settings.]
Improvement proposal
This problem can be solved by limiting the number of dlls with the
RoslynAnalyzer
asset label to one.Currently, analzyer is disable on any platform, so doing this was sufficient.
So, why not pick one analyzer that can be used in the target Unity editor and change it to only put
RoslynAnalyzer
there?According to our research, the analyzer/source generator versions that work with Unity are as follows.
(You can find the Microsoft.CodeAnalysis.CSharp.dll bundled in a folder called DotNetSdkRoslyn in the Unity editor application, so you can check the version.)
I have implemented this in #616 and would appreciate your confirmation. Thanks!
The text was updated successfully, but these errors were encountered: