dotnet core 2.1: «Обнаружены конфликты между различными версиями» при ссылке на веб-проект из проекта xunit - PullRequest
0 голосов
/ 29 августа 2018

Я собирался обновить приложение netcore 2.0 до 2.1, когда наткнулся на эту странную вещь.

Если я создаю веб-проект, а затем проект xunit, ссылающийся на первый, как только я использую любой класс Newtonsoft.Json, я получаю следующую ошибку:

/media/data/sas/devel/opt/dotnet-sdk-2.1.401/sdk/2.1.401/Microsoft.Common.CurrentVersion.targets(2110,5): 
warning MSB3277: Found conflicts between different versions of "Newtonsoft.Json" that could not be resolved.  
These reference conflicts are listed in the build log when log verbosity is set to detailed. 
[/media/data/sas/devel/apps/tmp/dotnet-error/test/test.csproj]
  test -> /media/data/sas/devel/apps/tmp/dotnet-error/test/bin/Debug/netcoreapp2.1/test.dll

В проекте, который я пытался обновить, я получаю много ошибок, подобных этой. Похоже, что в проекте xunit используются разные версии пакетов и они сталкиваются.

Это шаги для воспроизведения ошибки:

$ dotnet new web -o project
$ dotnet new xunit -o test
$ cd test
$ dotnet add reference ../project/
$ dotnet clean && dotnet build

и все работает нормально, но если я добавлю это в project / Program.cs

    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
        var s = Newtonsoft.Json.JsonConvert.SerializeObject(123);
    }

Тогда я получаю предупреждающее предупреждение.

У меня есть какой-нибудь способ решить это?

КСТАТИ

$ dotnet --version
2.1.401

1 Ответ

0 голосов
/ 29 августа 2018

Наверное, я нашел ответ в этом руководстве по миграции :

https://docs.microsoft.com/en-us/aspnet/core/migration/20_21?view=aspnetcore-2.1#rules-for-projects-targeting-the-shared-runtime

Вы должны добавить ссылку на пакет к Microsoft.AspNetCore.App в тестовом проекте.

Добавить ссылку на пакет для Microsoft.AspNetCore.App в MyApp.Tests. Для получения дополнительной информации см. Интеграционное тестирование сложно настроить и может нарушиться при обслуживании общей инфраструктуры .

...