Я разрабатываю проект, в котором используется Integration Facility Castle Windsor WCF как архитектура DDD. Существует один проект контейнера, проект с одним доменом, несколько проектов реализации и исполняемая консоль. Дерево зависимостей может быть показано, как показано ниже:Замок Windsor WCF Facility не работает в режиме деблокирования при отключении оптимизации кода или full-pdb
Console (ех) -> Контейнер (Виндзорский) -> {Реализация -> DomainInterfaces}
проект консоль приводит к вызову Container.Bootstrapper.Initialize() и замок монтажники поиска этой сборки в этом методе. В режиме отладки он работает успешно, windsor загружает все зависимости и создает службу WCF. Когда курсор входит в Initialize, я вижу недавно загруженные модули в окне Modules.
Зависимость код установки приведен ниже:
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container = new WindsorContainer().AddFacility<WcfFacility>()
.Register
(
Component.For<IDataProvider>().Instance(new DataProvider(s_DataConfigurationElement)).LifeStyle.Singleton,
Component.For<IUserRepository>().ImplementedBy<UserRepository>().LifeStyle.Singleton,
Component.For<IDomainManager>().ImplementedBy<DomainManager>().LifeStyle.Singleton,
Component.For<IGateway>().ImplementedBy<Gateway>().LifeStyle.PerThread.AsWcfService()
);
}
Проблема заключается в режиме выпуска. Я не мог установить точку останова на этот метод, и установщики не могли работать, поэтому ничего не было загружено в окне модулей. В режиме выпуска он работает только в том случае, если оптимизация кода не отмечена, а информация об отладочном файле full-pdb проверяется в параметрах проекта проекта консоли. Это известная проблема или ошибка?
Заранее спасибо.
Я могу изображения, что код для монтажников не оптимизирован далеко, так что код для загрузки модулей больше не поднимать их. Проверьте содержимое вашей DLL с помощью Ildasm. – Marwijn
Можете ли вы сказать мне, какие DLL (я) следует проверить? Exe или контейнер или реализации? –
попробуйте проверить DLL, которая содержит функцию установки выше. Альтернативу вы могли бы разместить там строку ведения журнала с помощью NLog. (Если код оптимизирован, что может даже устранить проблему). – Marwijn