У меня есть проект DLL, который использует пакет SendGrid Nuget. Для пакета SendGrid требуется пакет Nuget System.Net.Http 4.3.4. Этот проект DLL я затем упаковал в пакет Nuget.
Теперь у меня есть проект ASP.NET MVC, который включает в себя мой пакет Nuget. Из-за требований к зависимостям при установке устанавливаются SendGrid, System.Net.Http и другие зависимости.
Теперь, когда мое веб-приложение пытается отправить электронное письмо, я получил следующую ошибку.
System.IO.FileNotFoundException
HResult=0x80070002
Message=Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Source=Bc3.Mail
StackTrace:
at Bc3.Mail.MailHelper.SendMessage(SendGridMessage message) in C:\Code\Shared Libraries\Bc3.Mail\Bc3.Mail\MailHelper.cs:line 166
at Bc3.Mail.MailHelper.SendMail(MailMessage mail) in C:\Code\Shared Libraries\Bc3.Mail\Bc3.Mail\MailHelper.cs:line 128
…
Теперь я запутался, так как думал, что установлена версия 4.3.4. Я проверил версию System.Net.Http во всех моих проектах, и она говорит, что это версия 4.2.0.0. Хорошо, я запутался, почему он показывает 4.2, когда думал, что установил 4.3.4. Однако, если на мой проект ссылается 4.2, как он не может его найти?
Во всяком случае, затем я посмотрел свой файл web.config и увидел это
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0"/>
</dependentAssembly>
Я не знаючто-нибудь об этих перенаправлениях привязки. Но я решил удалить это, и все работало нормально.
Так что мой вопрос, почему?
Спасибо