. NET Предупреждение о сборке ядра из-за разных версий EntityFramework - PullRequest
1 голос
/ 03 августа 2020

Используя VS 2019, некоторые из моих проектов генерируют это предупреждение сборки при компиляции:

5> C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Current \ Bin \ Microsoft.Common.CurrentVersion.targets (2081,5): предупреждение MSB3277: обнаружены конфликты между различными версиями Microsoft.EntityFrameworkCore, которые не удалось разрешить. Эти ссылочные конфликты перечислены в журнале сборки, если для подробности журнала задано значение «Подробный».

Поскольку журнал на самом деле не ... подробный (даже в подробном режиме), я немного исследовал, и кажется ошибка спровоцирована Pomelo.EntityFrameworkCore.Mysql / 3.1.2 (мы используем MariaDB). Вот отрывок из проекта json, зависящего от EF 3.1.0, а текущая версия - 3.1.6:

  "Pomelo.EntityFrameworkCore.MySql/3.1.2": {
    "type": "package",
    "dependencies": {
      "Microsoft.EntityFrameworkCore.Relational": "3.1.0",
      "MySqlConnector": "[0.61.0, 1.0.0)",
      "Pomelo.JsonObject": "2.2.1"
    },

Вот пример PackageReference включает разделы тестового проекта для при котором происходит предупреждение:

  <ItemGroup>
    <PackageReference Include="FluentAssertions" Version="5.10.3" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
    <PackageReference Include="NSubstitute" Version="4.2.2" />
    <PackageReference Include="XmlUnit.Core" Version="2.8.0" />
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.2">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="coverlet.collector" Version="1.3.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

Что мне делать:

  • игнорировать это предупреждение (и ждать обновления зависимости pomelo)
  • перейти на EF 3.1.0
  • любая другая идея?

BR

1 Ответ

2 голосов
/ 06 августа 2020

В тестовом проекте отсутствуют ссылки на пакеты проблем c. недостаточно только добавить их в проект, на который вы ссылаетесь во втором проекте.

Поэтому добавьте их в тестовый проект:

<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.6" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.2" />

Если у вас все еще есть проблемы, связанные с системой .Configuration.ConfigurationManager также добавляет

<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.7.0" />

в тестовый csproj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...