У меня есть библиотека классов C # .NET, ClassLib
, в которой используются Newtonsoft.Json
и RestSharp
.
Идея библиотеки заключается в том, что это «суперобертка» API, которая включена в сторонние приложения конечных пользователей, например, приложения для настольных компьютеров, веб-приложения, службы Windows и т. Д.
Чтобы сохранить самодостаточность, я встроил Newtonsoft и RestSharp в ClassLib с использованием встроенных ресурсов и подхода AssemblyResolve , который обсуждался в нескольких потоках на SO.
Пока что все банально; Я использовал этот подход несколько раз в разных проектах, таких как плагины, и все в целом работает как положено.
Однако на этот раз я наткнулся на странную загадку. И это противоречиво.
Я использую ClassLib в нескольких небольших проектах настольных приложений, которые демонстрируют возможности ClassLib, а также основной производственный проект.
Все отлично работает в демонстрационных проектах, а прекрасно работал в производственном проекте. Но производственный проект только что начал бросать сборку не найдена ошибка:
«Не удалось загрузить файл или сборку» RestSharp, версия = 100.0.0.0,
Культура = нейтральная, PublicKeyToken = 598062e77f915f75 'или одна из ее
зависимостей. Общее исключение (исключение из HRESULT:
0x80131500) ":" RestSharp, версия = 100.0.0.0, культура = нейтральная,
PublicKeyToken = 598062e77f915f75"
Я пытался заставить демонстрационный проект выдать эту ошибку, запустив его с ClassLib.dll на четырех других машинах, где RestSharp не зарегистрирован, где я могу найти, но он работает отлично.
Но независимо от того, что я делаю с производственным проектом - который работает на машине, где - несколько посторонних копий RestSharp, но ничего в GAC, что я могу найти - он продолжает терпеть неудачу на этом ошибка.
Дело в том, что до вчерашнего дня все было хорошо.
Так что, конечно, что-то изменилось, чтобы создать проблему, я просто не знаю, что это такое.
Соответствующие баллы:
- ClassLib скрывается с помощью Obfuscar. Так было всегда, и ничего (что я могу точно определить) не изменилось.
- ClassLib, демонстрационные проекты и производственный проект нацелены на .NET 4.5, как и пакеты NuGet Newtonsoft и RestSharp.
- Все хорошо строит; ошибка во время выполнения при первом обращении к API.
- Если я включу RestSharp в качестве эталонной сборки в производственный проект, все будет хорошо.
- Я дважды проверил версии сборки повсюду.
- Я очистил кеши и даже открыл проект в других версиях VS (я использую VS2017 Community, но до недавнего времени использовал VS 2013 Pro).
- Да, я понимаю, что мог бы просто включить RestSharp в качестве зависимости ClassLib, но я не хочу этого делать, учитывая, что встроенный подход должен работать нормально.
- Я также пытался использовать Costura, который, насколько я могу судить, работает очень хорошо, но симптомы те же.
Есть идеи?