.NET Core WEB API System.Core.dll Сопоставление ссылок

Я новичок в .NET Core и пытаюсь написать веб-службу с использованием .NET Core Web API в проекте. Другие подпроекты написаны на .NET Framework 4.5. Существует проект для слоя репозитория. Мне нужно получить все записи, используя репозиторий в проекте .NET Core Web API. Я добавил ссылку на проект репозитория в проект .Net Core Web API. Итак, для внедрения зависимостей; в седьмой Startup.cs ConfigureService я добавил следующее;

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();
    services.AddSingleton(typeof(IRepository<>), typeof(RepositoryBase<>));
}

Я попытался перечислить все записи с помощью следующего метода в соответствующем контроллере;

[HttpGet]
[Route("Book/GetAll")]
public IActionResult GetAllRecords()
{
    return Ok(_bookRepository.GetAll());
}

Когда я вызываю это действие через веб-браузер, я получаю следующее сообщение об ошибке;

>  System.IO.FileLoadException: Could not load file or assembly
> 'System.Core, Version=4.0.0.0, Culture=neutral,
> PublicKeyToken=b77a5c561934e089'. The located assembly's manifest
> definition does not match the assembly reference. (Exception from
> HRESULT: 0x80131040)   File name: 'System.Core, Version=4.0.0.0,
> Culture=neutral, PublicKeyToken=b77a5c561934e089'
>      at BookApi.Startup.ConfigureServices(IServiceCollection services)   --- End of stack trace from previous location where
> exception was thrown ---
>      at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
>      at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection
> services)
>      at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices()
>      at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

Не могли бы вы помочь мне, что это значит? Я проверил dll GAC с помощью следующей команды;

  C:\Windows\System32>gacutil /l | find /i "system.core"

>   System.Core, Version=3.5.0.0, Culture=neutral,
> PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL  
> System.Core.resources, Version=3.5.0.0, Culture=tr,
> PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL  
> System.Core, Version=4.0.0.0, Culture=neutral,
> PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL  
> System.Core.resources, Version=4.0.0.0, Culture=tr,
> PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL

Кажется, существует System.Core.dll версии 4.0.0.0. Я использую Visual Studio 2017 версии 15.2. Кроме того, я не уверен, содержит ли файл appsettings.json необходимые объявления. Не могли бы вы также объяснить формат appsettings.json?

Спасибо за ответы..


person Cranberriess_    schedule 20.07.2017    source источник


Ответы (1)


Я предлагаю вам проверить несколько моментов.

  • В файле appsettings.json такого объявления не будет. Вам нужно будет проверить свой файл .csproj.
  • Почему бы вам не упростить DI, добавив services.AddSingleton();
  • Проверьте все свои зависимости и найдите, какие из них используют зависимость System.core, и обновите их, следуя приведенным ниже рекомендациям.
  • Обновите каждую зависимость вашего проекта как минимум до версии 1.1.4+.

Надеюсь это работает.

person Alan Silva    schedule 23.07.2017