Description
Description
Microsoft.Extensions.Logging.Abstractions 8.0.1 did not depend on System.Diagnostics.DiagnosticSource, but Microsoft.Extensions.Logging.Abstractions 8.0.2 does, even though the Microsoft.Extensions.Logging.Abstractions.dll files in the package do not reference the System.Diagnostics.DiagnosticSource assembly.
Reproduction Steps
Review the dependencies
elements in the nuspec files within the nuget packages.
Microsoft.Extensions.Logging.Abstractions 8.0.1:
<dependencies>
<group targetFramework=".NETFramework4.6.2">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.1" exclude="Build,Analyzers" />
<dependency id="System.Buffers" version="4.5.1" exclude="Build,Analyzers" />
<dependency id="System.Memory" version="4.5.5" exclude="Build,Analyzers" />
</group>
<group targetFramework="net6.0">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.1" exclude="Build,Analyzers" />
</group>
<group targetFramework="net7.0">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.1" exclude="Build,Analyzers" />
</group>
<group targetFramework="net8.0">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.1" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.0">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.1" exclude="Build,Analyzers" />
<dependency id="System.Buffers" version="4.5.1" exclude="Build,Analyzers" />
<dependency id="System.Memory" version="4.5.5" exclude="Build,Analyzers" />
</group>
</dependencies>
Microsoft.Extensions.Logging.Abstractions 8.0.2:
<dependencies>
<group targetFramework=".NETFramework4.6.2">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.2" exclude="Build,Analyzers" />
<dependency id="System.Diagnostics.DiagnosticSource" version="8.0.1" exclude="Build,Analyzers" />
<dependency id="System.Buffers" version="4.5.1" exclude="Build,Analyzers" />
<dependency id="System.Memory" version="4.5.5" exclude="Build,Analyzers" />
</group>
<group targetFramework="net6.0">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.2" exclude="Build,Analyzers" />
<dependency id="System.Diagnostics.DiagnosticSource" version="8.0.1" exclude="Build,Analyzers" />
</group>
<group targetFramework="net7.0">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.2" exclude="Build,Analyzers" />
<dependency id="System.Diagnostics.DiagnosticSource" version="8.0.1" exclude="Build,Analyzers" />
</group>
<group targetFramework="net8.0">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.2" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.0">
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.2" exclude="Build,Analyzers" />
<dependency id="System.Diagnostics.DiagnosticSource" version="8.0.1" exclude="Build,Analyzers" />
<dependency id="System.Buffers" version="4.5.1" exclude="Build,Analyzers" />
<dependency id="System.Memory" version="4.5.5" exclude="Build,Analyzers" />
</group>
</dependencies>
Check for references to System.Diagnostics.DiagnosticSource in the Microsoft.Extensions.Logging.Abstractions assembly metadata.
Expected behavior
The Microsoft.Extensions.Logging.Abstractions NuGet package should not depend on the System.Diagnostics.DiagnosticSource NuGet package.
Actual behavior
The Microsoft.Extensions.Logging.Abstractions NuGet package depends on the System.Diagnostics.DiagnosticSource NuGet package on some target frameworks.
Regression?
Yes, this is a regression from Microsoft.Extensions.Logging.Abstractions 8.0.1.
Known Workarounds
No response
Configuration
No response
Other information
This seems a bad cherry-pick in #107161 (to release/8.0-staging
). It added a conditional <ProjectReference Include="$(LibrariesProjectRoot)System.Diagnostics.DiagnosticSource\src\System.Diagnostics.DiagnosticSource.csproj" />
to src/libraries/Microsoft.Extensions.Logging.Abstractions/src/Microsoft.Extensions.Logging.Abstractions.csproj
even though it did not change any C# code in that project.
The original #106172 (to main
) likewise added a conditional ProjectReference, but it also removed an unconditional ProjectReference from another part of the file. This unconditional ProjectReference to System.Diagnostics.DiagnosticSource had been added in #103138 (to main
) for the log buffering feature that is not on the release/8.0
branch.
This bug makes application maintenance a bit more complex by increasing the number of packages whose license terms and support status need to be tracked.