Дизайнер не может быть показан для этого файла, потому что ни один из классов внутри него не может быть спроектирован
У нас есть следующий общий компонент:
public class OurServiceBase : System.ServiceProcess.ServiceBase
Этот класс имеет функциональность, которую мы хотим использовать во всех наших нисходящих сервисах, таких как стандартизованное планирование выполнения и возможности ведения журнала.
В новом проекте я добавляю следующее:
public class MyService : System.ServiceProcess.ServiceBase
В конструкторе Windows класс отображается правильно.
Когда я меняю службу на вывод из OurServiceBase
public class MyService : OurSharedLibrary.OurServiceBase
Дизайнер перестает работать:
![Error screenshot]()
Полная ошибка:
Дизайнер не может быть показан для этого файла, потому что ни один из классов внутри него не может быть спроектирован. Дизайнер проверил следующие классы в файле: 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 2:34 вечера EDT Новое открытие.
Класс "OurServiceBase" существует в отдельном проекте (обычно он упоминается только как DLL). По прихоти я скопировал файл базового класса в свой проект, построил и открыл конструктор. Это сработало! Когда я снова удалил файл базового класса и вернулся во внешнюю ссылку на DLL, дизайнер снова сломался.
Ответы
Ответ 1
Лучше всего начать с версии OurServiceBase
без каких-либо функций и посмотреть, можете ли вы создать MyService
. Если это так, то медленно добавляйте функциональность до тех пор, пока она не сломается.
Так как похоже, что у Visual Studio возникает проблема с сериализацией одного из членов OurServiceBase
.
Ответ 2
Вы также можете попробовать:
- Закройте все страницы дизайна пользовательского интерфейса.
- Чистое решение
- Решение для сборки
- Откройте страницы дизайна пользовательского интерфейса.
Это может или не поможет, но он, безусловно, разрешил ту же проблему в моем проекте.
Ответ 3
На всякий случай кто-то вроде меня должен работать над старой базой проектов на Visual Studio 2008 и сталкиваться с той же проблемой.
Вероятно, потому, что путь к проекту содержит некоторые экзотические символы, такие как C#
Пример: мой путь выглядит следующим образом:
C:\Проекты\С#\имя_проекта...
Когда он переименован в
C:\Проекты\CSharp\имя_проекта...
Visual Studio теперь может распознавать родительский класс и затем открывать форму с унаследованной формой.
Ответ 4
Вы также можете столкнуться с этой проблемой, если ваш элемент управления/службы наследуется от общего класса. Дизайнер хорошо ладит с абстрактными классами в иерархии, так как он должен их создавать.
Ответ 5
У меня было решение с двумя проектами (одно ссылалось на другое), и я только что настроил таргетинг на .Net 4.5.2, а другой - на 4.5.
Совет: просмотреть предупреждения в списке ошибок:
Произошла несоответствие между архитектурой процессора создаваемого проекта "MSIL" и процессорной архитектурой ссылки "C:.... dll", "x86". Это несоответствие может привести к сбоям во время выполнения. Пожалуйста, подумайте об изменении целевой архитектуры процессора вашего проекта через Configuration Manager, чтобы согласовать архитектуры процессоров между вашим проектом и ссылками или зависеть от ссылок на архитектуру процессора, которая соответствует целевой архитектуре процессора вашего проекта.