Dot 2005. Ошибка среды при визуальном наследовании форм
От: DmitryShevelev  
Дата: 17.02.06 18:38
Оценка:
Visual studio 2005 8.0.50727.42
Простейшая библиотека классов с одной формой-предком. Опять же с нуля собранный основной проект с формой-потомком.
Добавляем элемент (например, кнопку) в предка. Выполняем Build solution. С первого, второго, на крайний конец, третьего раза после такой операции при попытке открыть потомка в среде вылетает ошибка.
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Всё. Дальше только переоткрытие среды (закрытие и открытие проекта не помогает).

Открываем среду и solution заново. Все опять довольны. В потомке появилась добавленная в предке кнопка.

Проверено с этой версией среды на трёх разных машинах. Из них две под Windows 2000, одна под XP. Результат столь же плачевный.
В итоге, пережить можно, но в начале разработки раздражает порядком. Хотелось бы услышать любые идеи и комментарии.
Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 17.02.06 19:12
Оценка: -1
Еще один "наследыватель"...

Ню-ню...

Наследование форм МАЙКРОСОФТОМ ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ! Ваши грабли — сами и разбирайтесь.

Real programmers don't comment their code. If it was hard to write, it should be hard to understand.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 18.02.06 11:23
Оценка:
Здравствуйте, BlackTigerAP, Вы писали:

BTA>Еще один "наследыватель"...


BTA>Ню-ню...


BTA>Наследование форм МАЙКРОСОФТОМ ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ! Ваши грабли — сами и разбирайтесь.


BTA>-


BTA>
данное сообщение получено с www.gotdotnet.ru

BTA>ссылка на оригинальное сообщение



ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ
это навсегда или до след FIX'a
а так удобно сделал основную форму и работаешь отнаследовавшись ...
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 18.02.06 11:50
Оценка:
Ну я бы сказал, почти навсегда. В Майкрософте есть только одно правильное мнение — мнение Майкрософта. Всё остальное — чушь собачья и не подлежит рассмотрению архитекторами.

Не, они конечно внимательно выслушают, скажут "спасибо, рассмотрим". Это из вежливости и из типа "мы учитываем мнение!". На самом деле твой запрос летит в ближайший "Deleted Items".

А с другой стороны, я уже писал, почему ЭТО невозможно при текущей архитектуре. Кратко — вся инициализация контролов лежит в InitializeComponents(). Этот медот не "перекрываемый". То есть для внесения изменений в новый (отнаследованный) контрол, нужно, грубо говоря, вносить изменения в исходный(!) код базового(!) класса. Он же уже содержит какие-то предопределенные элементы, а ты туда еще пихаешь в design-time. Design-time "видит" только "InitializeComponent()" и анализирует его. И вот тут-то все грабли и лежат. Потому-то студия и фигеет от такого наследования.

Кодом всё, батенька, кодом и ручками.

Real programmers don't comment their code. If it was hard to write, it should be hard to understand.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 18.02.06 12:01
Оценка:
на самом деле это глюк среды

с наследованием на прямую не связан

у меня и без наследования также глючит

а наследование форм и юзер контролов поддерживается
есть и темплейт соответствующий


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 18.02.06 12:11
Оценка:
Bug? Судя по комментариям, да. А вот насчёт "официально не поддерживается"...
Смущает наличие в MSDN таких разделов как "Windows Forms Visual Inheritance" и т.п.
По поводу InitializeComponents. А кто лезет в базовый клас при изменениях в потомке? Меняется твой InitializeComponents. Старый отработает в унаследованном конструкторе. Два раза работа? Да. Но таких уже катастрофических проблем (на первый взгляд новичка) не видно и уж "фигеть" точно не с чего.
PS
В конце концов, переживу. Базовые формы на то и базовые, чтобы нечасто в них лазить. А к идиотизму от производителей софта не привыкать . Только всегда в таких ситуациях интересует, чем же занимаются тестировщики: достаточно сесть на пару дней в новую среду, и тараканы лезут из всех щелей...



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 18.02.06 15:41
Оценка:
А чего тут смущаться? "Не поддерживается" не значит "запрещено". Пожалуйста — наследуйтесь сколько кому угодно. Только с граблями сами разбирайтесь. А статьи на МСДН пишут люди, и не всегда эти люди из самого Майкрософта.

А вот лезть в базовый класс приходится визуальному дизайнеру. Особенно если кто-то хочет менять характеристики элементов, входящих в базовый класс.

Тестировщики — песня особая. Долгая и грустная. Иногда складывается впечатление, что в МС тестируют на бумаге. Или вообще в фантазиях. Базовые сценарии отрабатывают нормально, а поглубже — труба. Да и не было у МС времени хорошо тестировать VS2005 — только официально признанных багов, оставленных "на потом" — море. Вспомни эпопею с релизом. В первой половине этого года обещали сервис пак дать, посмотрим.

Real programmers don't comment their code. If it was hard to write, it should be hard to understand.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: Аноним  
Дата: 20.02.06 07:29
Оценка: +1
Здравствуйте, BlackTigerAP, Вы писали:
BTA>А вот лезть в базовый класс приходится визуальному дизайнеру. Особенно если кто-то хочет менять характеристики элементов, входящих в базовый класс.

Вопрос для общего развития.
Что здесь понимается под "менять характеристики элементов, входящих в базовый класс"? Если мой случай (изменение именно в предке с rebuild solution), то, наверное, должно происходить пересоздание заново уже открытых потомков в визуальном редакторе. Пересоздание полное. Такое же, как при первом открытии (с которым нет проблем). В чём тогда дополнительные сложности для среды в случае переоткрытия при необходимости пересоздания в отличие от начального открытия?
Если же речь идёт об изменении в потомке свойства элемента, который унаследован, то изменений в предке не требуется? Простейший пример — изменение названия кнопки. В предке остаётся старая подпись. В потомке появляется установка нового названия кнопки. Причём при создании формы будет (?) происходить (не проверял) создание компоненты со старыми свойствами и потом их изменение в потомке на новое значение.
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 20.02.06 09:17
Оценка:
>А вот лезть в базовый класс приходится визуальному дизайнеру. >Особенно если кто-то хочет менять характеристики элементов, >входящих в базовый класс.

Дизайнер не лезет в базовый класс. Просто создает экземпляр базовой формы, и потом вызывает метод InitializeComponent текущей формы. Ты можешь как угодно создать базовую форму, не обязательно с методом InitializeComponent. Дизайнеру все равно.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: SerkMan  
Дата: 21.02.06 14:51
Оценка:
Здравствуйте, DmitryShevelev, Вы писали:

Это баг студии. Его можно описать так.
При первом построении происходит создание динамических сборок и они прекрепляются.
Но последущие сборки приложение не перетирают старую. отсюда и глюки.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 20.02.06 16:38
Оценка:
Это еще не все проблеммы связанные с наследованием форм. Если на базовой форме находиться какой-нить контролл с доступом типа protected или public, то в наследнике изменять св-ва этого контролла студия вам не позволит, хотя изменять их вроде как можно (из кода есно все меняется). Еще одна причина, по которой пришлось отказаться от использования базовой формы. Эта проблемма поднималась мною в конце прошлого года, ссылку на то обсуждение сейчас не нашел.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 21.02.06 12:40
Оценка: +1
>Если на базовой форме находиться какой-нить контролл с доступом типа protected или public, то в наследнике изменять св-ва этого контролла студия вам не позволит

Непонятное утверждение (может быть, проблемы предыдущих версий, с которыми я не столкнулся). У меня и текущий 2005 и все предыдущие версии Dot нормально редактируют свойства унаследованного контрола.
Тот же простейший пример. Название кнопки. Работает. Именно из дизайнера.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 21.02.06 15:10
Оценка: -1
>...Работает. Именно из дизайнера.

Занчит Вам повезло больше чем мне...после обсуждений этой проблеммы на форуме я отказался от данной задумки. Как оказалось — это реальный баг, обойти который пока нельзя.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 03.03.06 05:23
Оценка:
Точно, атрибут какой-то, или что-то ещё. Делаю компонент на базе ToolStrip, размещаю его на форме и делаю его protected. Компилятор выдаёт ошибку:

error CS0052: Inconsistent accessibility: field type 'SspMain.SspToolStrip' is less accessible than field 'SspMain.FrmBaseMDIChildTableEdit.sspToolStrip1'

С другой стороны, если "они" "это" запретили, то наверное не зря? Если у кого есть ссылка, поясняющая таинство сего факта киньте пожста...


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: Аноним  
Дата: 03.03.06 05:25
Оценка:
Извиняюсь, не в ту тему написал )))))


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Dot 2005. Ошибка среды при визуальном наследовании форм
От: StanislavB  
Дата: 06.03.06 09:01
Оценка:
Здравствуйте, DmitryShevelev, Вы писали:
DS> Всё. Дальше только переоткрытие среды (закрытие и открытие проекта не помогает).
Этого можно избежать, если перед компиляцией и закрытием солюшна закрывать все форм-дизайнеры.
Иногда требуется рекомилировать весь солюшн перед открытием дизайнера, чтобы все сборки были актуальны.

В общем, ничего страшного тут нет. Бывает гораздо хуже, когда после работы дизайнера с формой с некоторыми сторонними контролами, нужно вручную каждый раз править InitializeComponents()
Re[2]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: knst Россия  
Дата: 06.03.06 14:41
Оценка:
Здравствуйте, Crutch, Вы писали:

C>Это еще не все проблеммы связанные с наследованием форм. Если на базовой форме находиться какой-нить контролл с доступом типа protected или public, то в наследнике изменять св-ва этого контролла студия вам не позволит, хотя изменять их вроде как можно (из кода есно все меняется). Еще одна причина, по которой пришлось отказаться от использования базовой формы. Эта проблемма поднималась мною в конце прошлого года, ссылку на то обсуждение сейчас не нашел.


C>
данное сообщение получено с www.gotdotnet.ru

C>ссылка на оригинальное сообщение


На DevExpress есть такая статейка ("How to enable visual inheritance for Developer Express controls when using them in Visual Studio 2005 &mdash; Developer Express Knowlindge Base") ссылка у меня в закладках сохранилась , но что-то сейчас не пашет. Так вот там была выложена утилитка, которая нежно трогает студию за какое-то место(скорее всего реестр) и изменение унаследованных форм/контролов становится возможным.
Re[3]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: knst Россия  
Дата: 06.03.06 14:46
Оценка:
Во нашел у себя. Вкладываю:
http://rsdn.ru:80/File/41792/DXInheritanceKey.exe
Re[3]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: Аноним  
Дата: 09.03.06 07:53
Оценка:
"Наследование форм МАЙКРОСОФТОМ ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ!"
-----------------------------------------
Не подскажите где в MSDN об этом сказано?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[4]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: Antares19 Россия http://igor-vagin.moikrug.ru/
Дата: 09.03.06 22:11
Оценка:
Здравствуйте, PaulMinsk, Вы писали:

PM>"Наследование форм МАЙКРОСОФТОМ ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ!"

PM>-----------------------------------------
PM>Не подскажите где в MSDN об этом сказано?

Насчет поддерживается — не поддерживается, не знаю. Подобную информацию не искал.
Но могу сказать, что в новых сертификационных экзаменах от MS вопросы про наследование форм есть.
Re[4]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: Аноним  
Дата: 10.03.06 07:04
Оценка:
Ха. И что там за вопросы? Так я не понял, а что тогда тут за полемика по поводу "Наследование форм МАЙКРОСОФТОМ ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ!"
Как я понимаю, наследовать свои формы можно.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[5]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: Antares19 Россия http://igor-vagin.moikrug.ru/
Дата: 10.03.06 16:34
Оценка:
Здравствуйте, PaulMinsk, Вы писали:

PM>Ха. И что там за вопросы?


Нее.. что конкретно за вопросы я сказать не могу. Правилами сертификации это запрещено.
Но вопросы именно на знание данных возможностей. Так что, получается, фича мало того что доументированная, по мнению MS программисты должны её знать и пользоваться ею.

PM>Так я не понял, а что тогда тут за полемика по поводу "Наследование форм МАЙКРОСОФТОМ ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ!"

PM>Как я понимаю, наследовать свои формы можно.

Ага.
Re[6]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: ajalnine  
Дата: 10.03.06 19:54
Оценка:
Здравствуйте, Antares19, Вы писали:

A>Здравствуйте, PaulMinsk, Вы писали:


PM>>Ха. И что там за вопросы?


A>Нее.. что конкретно за вопросы я сказать не могу. Правилами сертификации это запрещено.

A>Но вопросы именно на знание данных возможностей. Так что, получается, фича мало того что доументированная, по мнению MS программисты должны её знать и пользоваться ею.

PM>>Так я не понял, а что тогда тут за полемика по поводу "Наследование форм МАЙКРОСОФТОМ ОФИЦИАЛЬНО НЕ ПОДДЕРЖИВАЕТСЯ!"

PM>>Как я понимаю, наследовать свои формы можно.

A>Ага.


Постоянно пользуюсь наследованием форм, максимум что требуется — в дочерней форме к конструктору приписать :base(параметры..) чтобы передать конструктору родительской формы параметры, даже не думал что с этим бывают проблемы, InitializeComponents() у каждого свои, формы — обычные классы.
Re[6]: Dot 2005. Ошибка среды при визуальном наследовании фо
От: Аноним  
Дата: 12.03.06 09:04
Оценка:
О каких параметрах идет речь? Их как правило не бывает (по-крайней мере не рекомендуется использовать в контролах). У меня такие же грабли, честно сказать, я рассчитывал что в 2005 студии исправят
Подумываю о ручной сериализации, уже так это забодало. Смотрю сюда http://www.codeproject.com/csharp/collcontrolsrichdes.asp
С/у Дмитрий.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.