У нас есть следующий общий компонент:
public class OurServiceBase : System.ServiceProcess.ServiceBase
У этого класса есть функциональные возможности, которые нам нужны во всех наших последующих службах, такие как стандартизированные функции планирования выполнения и ведения журнала.
В новый проект добавляю следующее:
public class MyService : System.ServiceProcess.ServiceBase
В Windows Designer класс отображается правильно.
Когда я меняю сервис на производный от OurServiceBase
public class MyService : OurSharedLibrary.OurServiceBase
Дизайнер перестает работать:
Полная ошибка:
Невозможно отобразить конструктор для этого файла, поскольку ни один из классов в нем не может быть спроектирован. Разработчик проверил следующие классы в файле: EmailProcessor --- Не удалось загрузить базовый класс «OurSharedLibrary.CienaServiceBase». Убедитесь, что на сборку ссылались и что все проекты построены.
Ссылки на правильные сборки, проект строится. Я не понимаю, почему дизайнер отказывается от этого, так как мой сервис в конечном итоге происходит из проектируемого класса.
Любые предложения приветствуются.
Немного больше информации - стек вызовов от дизайнера, когда он выдает ошибку о невозможности спроектировать производную службу:
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
7/19/2011 14:34 EDT Новое открытие.
Класс "OurServiceBase" существует в отдельном проекте (обычно упоминается только как DLL). По какой-то причине я скопировал файл базового класса в свой проект, собрал и открыл конструктор. Это сработало! Когда я снова удалил файл базового класса и вернулся к ссылке на внешнюю DLL, конструктор снова сломался.