2016-10-07 3 views
3

Мы используем API-интерфейс DocuSign, для которого требуется подписанная версия RestSharp, и мы хотим интегрировать Twilio, для которого требуется неподписанная версия. Я потратил немного времени, пытаясь заставить обе библиотеки DLL разрешить для каждой из своих зависимостей, и им не повезло. На этом этапе я надеюсь, что есть способ использовать подписанную DLL RestSharp с Twilio. У кого-нибудь был опыт с этим раньше?Можно ли использовать подписанный пакет RestSharp NuGet с Twilio?

Когда я пытаюсь удалить неподписанный RestSharp, мой код DocuSign работает нормально, но теперь TwilioRestClient не может разрешить зависимости. Обе библиотеки - 105.2.3.0.

Исключение типа 'System.IO.FileLoadException' произошло в Twilio.Api.dll, но не было обработано в коде пользователя.

Дополнительная информация: Не удалось загрузить файл или сборку 'RestSharp, Version = 105.2.3.0, Culture = нейтрально, PublicKeyToken = нуль' или один из его зависимостей. Определение манифеста размещенной сборки не соответствует ссылочной позиции сборки. (Исключение из HRESULT: 0x80131040)

+0

Вы исправите проблему? –

+1

Нет. Единственный способ, которым я мог это решить, - отделить процессы от разных приложений. Я закончил перенос данных между ними с очередью сообщений. – DevTech

ответ

2

Это вопрос для меня был кошмаром. В моем случае я использовал EasyPost, который использовал RestSharpSigned. Такая же разница.

В конечном итоге мне пришлось перестать полагаться на nuget для пакетов, на которые ссылается RestSharp. И использовал инструмент, чтобы добавить сильное имя в сторонние DLL. Он также фиксирует ссылку на unsigned dlls на новые подписанные.

  1. Я скопировал все библиотеки DLL из/пакетов/(easypost, Twilio, restsharp) в папку в корне моего решения под названием «ресурсы». В конечном итоге они будут проверены на ваш источник управления.

  2. Сделайте копию каталога ресурсов на рабочем столе. Если что-то прикручивается, вы хотите быстро найти новый набор нетронутых файлов.

  3. Щелкните правой кнопкой мыши по решению и нажмите «управлять пакетами nuget для решения». Удалите пакеты nuget для Twilio, EasyPost, Restsharp, RestSharpSigned и все, что полагается на RestSharp, и теперь имеет копию в ресурсах. Когда вы это сделаете, отметьте, какие из ваших проектов ссылаются на какие сборки. Это важно для более позднего. Примечание: удаление пакета из всех проектов приведет к удалению ссылки.

  4. Скачать Brutal Developer's Strong Namer Signer. Добавьте все DLL в/resources/через зеленый значок плюс. Это нормально, если некоторые из них уже подписаны.

  5. Нажмите «Подписать сборки», он подпишет все неподписанные сборки и зафиксирует ссылки между ними, чтобы указать на недавно подписанные версии.

  6. Пройдите через свои проекты и добавьте ссылки на прямые dll.

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

  8. В поднятом голосе крикнул: «Черт побери!» в триумфе. Встряхните свой кулак в боях .Net в небе для всех неприятностей сильное именование вызвало вас и миллионы других разработчиков.

В конце концов, мой план перейти на последнюю версию Twilio (5 *), который больше не имеет зависимость от RestSharp вообще. Как только это произойдет, я собираюсь убить свою папку «ссылки» и просто вернуться к простой оле nuget для этих пакетов.

enter image description here

Смежные вопросы