Подтвердить что ты не робот

Дизайнер не может быть показан для этого файла, потому что ни один из классов внутри него не может быть спроектирован

У нас есть следующий общий компонент:

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, дизайнер снова сломался.

4b9b3361

Ответ 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, чтобы согласовать архитектуры процессоров между вашим проектом и ссылками или зависеть от ссылок на архитектуру процессора, которая соответствует целевой архитектуре процессора вашего проекта.