Logging Source Generator emits CS0757 errors when referencing Microsoft.Extensions.Telemetry
See original GitHub issueDescription
I have a number of applications, both public and private, where for test purposes I’ve set them up to ingest changes from the .NET daily builds feed out of the dotnet/installer repo.
For one specific application, updating to .NET 8 RC1 daily builds is causing the application to fail to compile due to CS0757 errors for duplication partial logger method implementations. We use this pattern in many of the applications ingesting daily builds, but only this application was affected.
Through trial and error of cutting back the application to a minimal repro, I’ve found that this issue is caused when the application references the Microsoft.Extensions.Telemetry NuGet package (it doesn’t even need to be used).
A repository that contains the subset of the application that causes the compilation error can be found at martincostello/CS0757-With-Telemetry-Repro.
Reproduction Steps
- Install version
8.0.100-rc.1.23412.1
of the .NET SDK. - Clone https://github.com/martincostello/CS0757-With-Telemetry-Repro
- Run
dotnet build /p:IncludeTelemetry=true
Expected behavior
The application compiles.
Actual behavior
The application fails to compile due to CS0757
errors:
> dotnet build /p:IncludeTelemetry=true
MSBuild version 17.8.0-preview-23401-01+b3989dc43 for .NET
Determining projects to restore...
Restored src\MyApplication\MyApplication.csproj (in 869 ms).
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(15,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(27,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(39,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(51,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(63,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
Build FAILED.
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(15,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(27,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(39,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(51,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
src\MyApplication\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(63,40): error CS0757: A partial method may not have multiple implementing declarations [src\MyApplication\MyApplication.csproj]
0 Warning(s)
5 Error(s)
Time Elapsed 00:00:02.65
Regression?
Worked with version 8.0.100-preview.7.23376.3
of the SDK.
Known Workarounds
Do not reference Microsoft.Extensions.Telemetry.
Configuration
- .NET SDK
8.0.100-rc.1.23412.1
- Microsoft.Extensions.Telemetry
8.0.0-rc.1.23409.4
Other information
It might be that this is caused by some sort of compiler/tooling lag between the runtime, extensions sdk and/or installer repos that will resolve itself over time as dependencies flow and is a non-issue in practice, but it’s been broken in this application since last week so I thought it was worth flagging.
Issue Analytics
- State:
- Created a month ago
- Comments:8 (7 by maintainers)
Top GitHub Comments
Thanks a bunch for the help @martincostello! This should have been fixed with: https://github.com/dotnet/extensions/pull/4238, but after some testing I can see that this is indeed still broken for web projects (since the package is correctly removing the Logging.Abstractions analyzer package, but the web project targeting pack also includes this analyzer so it has to be removed from there as well). I’ll put up a fix that addresses this and let you know when we have a package version for you to test
Yeah, I think it should get backported. I’ll send out the PR for that in a bit.