Не удалось загрузить файл или сборку System.Data.SqlClient, Version = 4.2.0.2, когда я использую System.Data.SqlClient Version 4.4.3

Я использую System.Data.SqlClient Version 4.4.3 для всех классов классов .NET Standard 2.0 в моем проекте ASP.NET Core 2.0. Почему я получаю

Не удалось загрузить файл или сборку 'System.Data.SqlClient, Version = 4.2.0.2, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

когда проект публикуется с VSTS в Azure App Service? И, конечно, он отлично работает на моей машине!

Все это работало вчера. Но сегодня я решил обновить пакеты до:

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.3" />

Ответ 1

С понижением до

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />

и все работает снова! Потеряно 4 часа сегодня!

Ответ 2

Не знаю, является ли это той же ситуацией, с которой я столкнулся. Я добавил System.Data.SqlClient через nuGet, и он работал нормально.

Ответ 3

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

поместите это в свой app.config или в web.config в случае asp.net

<dependentAssembly>  
    <assemblyIdentity name="System.Data.SqlClient"  publicKeyToken="b03f5f7f11d50a3a"  culture="neutral" />  
    <bindingRedirect oldVersion="4.2.0.2" newVersion="4.4.3.0" />  
</dependentAssembly>  

Ответ 4

Сегодня у меня была аналогичная проблема, я обновил несколько пакетов, включая мета-пакет All до 2.0.6. Тогда мое приложение не будет ссылаться на приведенную выше ошибку. После большого расследования я сделал следующее, и теперь он работает.

Подключитесь к веб-сайту Azure с помощью FTP, перейдите на сайт → wwwroot. Здесь у меня была папка под названием "refs", а другая - "runtimes". Я удалил обе эти папки (после локальной резервной копии), повторно опубликовал свое приложение, и оно сработало!

Не уверен, почему это сработало, но я подумал, что это может быть полезно, кто-то сталкивается с этим с аналогичной проблемой.

Ответ 5

Для меня решение удалит пакет System.Data.SqlClient и снова установит его. Выполнение обновления пакета было недостаточным.