Ссылка на проект.NET Framework 4.6.2. Ошибки библиотеки.NET Standard 1.6
Во-первых, я делаю все это в Visual Studio 2017 версии 15.5.3. У меня установлен.NET 2.0 SDK.
В моем решении у меня есть куча библиотек классов.NET Standard 1.6.
У меня также есть консольное приложение.NET Core 1.1, которое ссылается на них.
У меня также есть библиотека классов.NET Framework 4.6.2 (назовите ее LIB_A), которая ссылается на некоторые из них. В нем есть некоторые определения поведения службы WCF. LIB_A строится без ошибок.
У меня есть приложение ASP.NET (Framework 4.6.2), предназначенное для LIB_A, в котором размещены некоторые службы WCF, использующие поведения из LIB_A, а также "SimpleService", который не ссылается ни на какие классы из LIB_A. Это размещено в IIS. Когда я строю этот проект, я получаю кучу предупреждений, таких как:
Невозможно разрешить конфликт между "System.Linq.Expressions, версия =4.1.0.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a" и "System.Linq.Expressions, версия =4.0.10.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a". Произвольно выбирая "System.Linq.Expressions, версия =4.1.0.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a".
Когда я вызываю метод в "SimpleService", он выполняется нормально, и я получаю ожидаемый ответ.
Когда я вызываю метод в одном из сервисов, которые ссылаются на классы поведения из LIB_A, я получаю следующее исключение:
System.IO.FileLoadException: "Не удалось загрузить файл или сборку" System.Runtime, версия =4.1.1.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a'или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)'
Я импортировал пакет nuget NETStandard.Library в приложение ASP.NET, и у меня есть следующий раздел в конфигурации Web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.Tracing" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Я понимаю, что это должно работать, но я полностью застрял на этом исключении. У кого-нибудь есть идеи о том, что происходит? Я предполагаю, что это как-то связано с предупреждениями "Нет способа разрешить конфликт", которые я получаю во время сборки, но не знаю, куда идти дальше.