使用 ServiceCollection 升级到 .NET 6 后版本冲突

ibe*_*dev 11 .net-assembly .net-6.0

事实证明,从 .NET 5 升级到 .NET 6 并不像我预期的那么简单。

由于以下错误,我的所有单元测试项目都无法编译

Severity    Code    Description Project File    Line    Suppression State
Error   CS0433  The type 'ServiceCollection' exists in both 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' and 'Microsoft.Extensions.DependencyInjection, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'    Sample.DynamoDb.FunctionalTests C:\src\my-solution\test\Sample.DynamoDb.FunctionalTests\DependencyInjectionTests\GetServiceTests.cs 22  Active
Run Code Online (Sandbox Code Playgroud)

他们引用了依赖于版本 6 的类库,但由于某种原因,测试项目本身Microsoft.Extensions.DependencyInjection.Abstractions似乎存在依赖关系。Microsoft.Extensions.DependencyInjection可能是被我使用的一些软件包拖过去的(我不知道是哪一个)。

这是我的测试项目

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>Enable</Nullable>
        <IsPackable>False</IsPackable>
        <IsPublishable>False</IsPublishable>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="FluentAssertions" Version="6.2.0" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />

        <PackageReference Include="xunit" Version="2.4.1" />
        <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
            <PrivateAssets>all</PrivateAssets>
        </PackageReference>
        <PackageReference Include="coverlet.collector" Version="3.1.0">
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
            <PrivateAssets>all</PrivateAssets>
        </PackageReference>
    </ItemGroup>

    <ItemGroup>
      <ProjectReference Include="..\..\src\Sample.DynamoDb.DependencyInjection\Sample.DynamoDb.DependencyInjection.csproj" />
    </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

任何人都有类似的问题或知道如何排除故障并找到问题或解决方法吗?

ibe*_*dev 9

事实证明,问题是因为一些引用的项目,引用了另一个项目,引用了另一个项目......它有一个 nuget 依赖项EventStore.Client.Grpc,它本身依赖于Microsoft.Extensions.Logging 5.0.0

Microsoft.Extensions.Logging带来了从属关系Microsoft.Extensions.DependencyInjection 5.0.0

查看我的测试项目obj/project.assets.json有助于我追踪这一点。