Skip to content

Microsoft.Extensions.Logging.Abstractions 8.0.2 unnecessarily depends on System.Diagnostics.DiagnosticSource #110401

Closed
@KalleOlaviNiemitalo

Description

@KalleOlaviNiemitalo

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions