Я создал проект asp.net web api 2 на основе .net fx, в котором я пытался использовать сборки MS Dependency и MS logging из компонентов Microsoft.Extensions.На самом деле он работает с проектами, основанными не на ядре Dotnet, обеспечивая внедрение зависимостей и каркас логирования с абстракциями.Локально, и когда мы используем Visual studio (версия 2017 в моем случае), она работает, развертывается при необходимости и успешно работает.
Когда мы используем MSBUILD, он не работает.У меня есть другой проект web api 2, который не использует DI и не регистрируется через MS.extns, и он успешно собирается.Я понятия не имею, чтобы разрешить конфликты, с которыми я сталкиваюсь.Когда я пытаюсь удалить конфликтующие сборки, он подходит к библиотекам абстракции Injection и logging, которые будут удалены.
Я также использую EF 6 в своем проекте.Конфликт начался с System.ComponentModel.Annotations.Ниже приведены строки ошибок моего журнала сборки.
оба являются web api 2 (не ядро dotnet) 1. успешная сборка = .net fx 4.6.2, EF 6, DI с использованием Unity.(не реализовывал ведение журнала в то время) 2. Не удалось создать проект = .net FX 4.6.2, EF 6, DI с использованием MS.Extns.DI и ведение журнала с использованием MS.Extns.Logging.
CSC : error CS1703: Multiple assemblies with equivalent identity have been imported: 'C:\AK\Api\PMApi\packages\System.ComponentModel.Annotations.4.5.0\lib\net461\System.ComponentModel.Annotations.dll' and 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\Facades\System.ComponentModel.Annotations.dll'. Remove one of the duplicate references. [C:\AK\Api\PMApi\PM.Data\PM.Data.csproj]
Done Building Project "C:\AK\Api\PMApi\PM.Data\PM.Data.csproj" (default targets) -- FAILED.
Done Building Project "C:\AK\Api\PMApi\PM.BL\PM.BL.csproj" (default targets) -- FAILED.
Done Building Project "C:\AK\Api\PMApi\PM.Api\PM.Api.csproj" (default targets) -- FAILED.
Done Building Project "C:\AK\Api\PMApi\ProjectManApi.sln" (default targets) -- FAILED.
Build FAILED.
"C:\AK\Api\PMApi\ProjectManApi.sln" (default target) (1) ->
"C:\AK\Api\PMApi\PM.Api\PM.Api.csproj" (default target) (2) ->
"C:\AK\Api\PMApi\PM.BL\PM.BL.csproj" (default target) (3) ->
"C:\AK\Api\PMApi\PM.Data\PM.Data.csproj" (default target) (4) ->
(CoreCompile target) ->
CSC : error CS1703: Multiple assemblies with equivalent identity have been imported: 'C:\AK\Api\PMApi\packages\System.ComponentModel.Annotations.4.5.0\lib\net461\System.ComponentModel.Annotations.dll' and 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\Facades\System.ComponentModel.Annotations.dll'. Remove one of the duplicate references. [C:\AK\Api\PMApi\PM.Data\PM.Data.csproj]
0 Warning(s)
1 Error(s)
Пожалуйста, помогите мне, так как я хотел попробовать DI и Logging Framework, используя MS extns, и он отлично работает во время тестирования и запуска.Что касается msbuild, который я использую для настройки Continuous Integration с использованием Jenkins / Team city в качестве моего собственного экземпляра, мне нужен MSBUILD только для сборки / тестирования / развертывания.
Мне нужно знать, не будет ли работать этот DI и логирование от MS.Extns с ядром, отличным от dotnet, и что мне нужно переключиться, чтобы использовать другую структуру DI.потому что, я закончил мой API, протестирован локально, и все работает отлично.
желательно, я хочу использовать их с надлежащим советом о том, как избавиться от этого конфликта от MSBUILD.
Обновление 1: Все pkgs Nuget являются самыми последними и актуальными.Кроме того, конфликт с аннотациями вызывает все проекты, независимо от проекта, который предназначен для EF.Когда у меня есть возможность предоставить мне библиотеки, зачем msbuild нужно искать путь справочных сборок Microsoft на диске компьютера?
Обновление 2: конфликт возникает из-за Microsoft.Extensions.Logging- Microsoft.Extensions.Options сборки, которые ссылаются на System.ComponentModel.Annotations.Я думаю, что версия Nuget пытается загрузить 4.5.1, в то время как путь к сборкам Microsoft Common, кажется, имеет версию 4.6.x или выше, что по какой-то причине Msbuild ссылается и заканчивается конфликтом.
У меня есть решение в github, если стоит посмотреть, где проблема. Github ссылка Спасибо