Я использую сборку Microsoft.Practices.ServiceLocation в сочетании с ninject для помощи в обнаружении сервисов. Я регистрирую свое недействительное ядро в методе провайдера servicelocator:
var kernel = new StandardKernel();
//do bindings
var locator = new NinjectServiceLocator(kernel);
ServiceLocator.SetLocatorProvider(() => locator);
Приведенный выше код прекрасно работает на машинах, на которых установлена корпоративная библиотека (через исполняемый файл msi). Я не в состоянии запустить установщик в производстве, поэтому у меня есть локальная библиотека DLL в каталоге bin, надеясь, что это будет работать. Однако это не работает. Я не получаю никаких сборок не найденных исключений, вместо этого я получаю ссылку на объект, не устанавливающую исключение из вызова to: 'at Microsoft.Practices.ServiceLocation.ServiceLocator.get_Current ()'.
Я читал в нескольких местах, что эта сборка не имеет каких-либо зависимостей http://msdn.microsoft.com/en-us/library/ff664422%28v=PandP.50%29.aspx, и локальная DLL должна помочь, но, похоже, этого не происходит.
Я провел тестирование на нескольких коробках, и ошибка постоянно возникала, пока я не запустил установщик. Интересно, что после удаления библиотеки она все еще работает (я думаю, она где-то кешируется).
Кто-нибудь имел опыт работы с типом проблемы?