Подключение Design time свойств для контрола в Blend'e 4.0
От: INsideR Латвия  
Дата: 09.12.09 10:48
Оценка:
Скачал Silverlight 4.0 Toolkit. Сделал как и в этой библиотеке *.Design сборку для своих контролов. При подключении сборки с контролами, возникает варнинг, но при указании alias'a вроде собираеться (). здесь Далее подключаю сборку в Blend'e и он не подхватывает. Как это можно продебажить, или в какую сторону смотреть? Если надо, могу выложить проект с Design.
Мудр тот, кто знает не многое, а нужное
Re: Подключение Design time свойств для контрола в Blend'e 4
От: notacat  
Дата: 09.12.09 11:57
Оценка: 3 (1)
INR>Скачал Silverlight 4.0 Toolkit. Сделал как и в этой библиотеке *.Design сборку для своих контролов. При подключении сборки с контролами, возникает варнинг, но при указании alias'a вроде собираеться (). здесь Далее подключаю сборку в Blend'e и он не подхватывает. Как это можно продебажить, или в какую сторону смотреть? Если надо, могу выложить проект с Design.

Версии Microsoft.Windows.Design.. сборок от этого Бленда используете?
Дебажить можно — открываете студию, открываете Бленд, аттачите студию к Бленду, открываете свой проект в Бленде..
Если в принципе ваша сборка грузится, но есть какие-то ошибки — увидите. Хотя лучше поставить брейкпойнт в IProvideAttributeTable.AttributeTable чтобы убедиться в том, что сборка грузится.
Если туда не попадете, проверяйте, как у вас атрибуты заданы. Есть ли атрибут
[assembly: ProvideMetadata(typeof(имя класса, реализующего IProvideAttributeTable))] и правильный ли в нем неймспейс указан. Лежит ли дизайн-тайм сборка в той же папке, в которой основная библиотека лежит. Можно еще попробовать в AssemblyFoldersEx маршрут к папке прописать, но Бленд 3 без этого подхватывает, наверное и 4-й должен.
й
Re[2]: Подключение Design time свойств для контрола в Blend'
От: INsideR Латвия  
Дата: 09.12.09 14:17
Оценка:
Здравствуйте, notacat, Вы писали:

INR>>Скачал Silverlight 4.0 Toolkit. Сделал как и в этой библиотеке *.Design сборку для своих контролов. При подключении сборки с контролами, возникает варнинг, но при указании alias'a вроде собираеться (). здесь Далее подключаю сборку в Blend'e и он не подхватывает. Как это можно продебажить, или в какую сторону смотреть? Если надо, могу выложить проект с Design.


N>Версии Microsoft.Windows.Design.. сборок от этого Бленда используете?

N>Дебажить можно — открываете студию, открываете Бленд, аттачите студию к Бленду, открываете свой проект в Бленде..
N>Если в принципе ваша сборка грузится, но есть какие-то ошибки — увидите. Хотя лучше поставить брейкпойнт в IProvideAttributeTable.AttributeTable чтобы убедиться в том, что сборка грузится.
N>Если туда не попадете, проверяйте, как у вас атрибуты заданы. Есть ли атрибут
N>[assembly: ProvideMetadata(typeof(имя класса, реализующего IProvideAttributeTable))] и правильный ли в нем неймспейс указан. Лежит ли дизайн-тайм сборка в той же папке, в которой основная библиотека лежит. Можно еще попробовать в AssemblyFoldersEx маршрут к папке прописать, но Бленд 3 без этого подхватывает, наверное и 4-й должен.

Спасибо, пересобрал со сборками из blend'a. Всё заработало.
Мудр тот, кто знает не многое, а нужное
Re[2]: Подключение Design time свойств для контрола в Blend'
От: INsideR Латвия  
Дата: 09.12.09 22:22
Оценка:
Здравствуйте, notacat, Вы писали:

INR>>Скачал Silverlight 4.0 Toolkit. Сделал как и в этой библиотеке *.Design сборку для своих контролов. При подключении сборки с контролами, возникает варнинг, но при указании alias'a вроде собираеться (). здесь Далее подключаю сборку в Blend'e и он не подхватывает. Как это можно продебажить, или в какую сторону смотреть? Если надо, могу выложить проект с Design.


N>Версии Microsoft.Windows.Design.. сборок от этого Бленда используете?

N>Дебажить можно — открываете студию, открываете Бленд, аттачите студию к Бленду, открываете свой проект в Бленде..
N>Если в принципе ваша сборка грузится, но есть какие-то ошибки — увидите. Хотя лучше поставить брейкпойнт в IProvideAttributeTable.AttributeTable чтобы убедиться в том, что сборка грузится.
N>Если туда не попадете, проверяйте, как у вас атрибуты заданы. Есть ли атрибут
N>[assembly: ProvideMetadata(typeof(имя класса, реализующего IProvideAttributeTable))] и правильный ли в нем неймспейс указан. Лежит ли дизайн-тайм сборка в той же папке, в которой основная библиотека лежит. Можно еще попробовать в AssemblyFoldersEx маршрут к папке прописать, но Бленд 3 без этого подхватывает, наверное и 4-й должен.


Теперь пишет: 'Could not load file or assembly 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)' VisualizationControls.Design. При добавлении xaml dictionary. Не сталкивались?
Мудр тот, кто знает не многое, а нужное
Re[3]: Подключение Design time свойств для контрола в Blend'
От: notacat  
Дата: 09.12.09 23:34
Оценка:
INR>Теперь пишет: 'Could not load file or assembly 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)' VisualizationControls.Design. При добавлении xaml dictionary. Не сталкивались?

2.0.5.0 — это от Сильверлайта? Для дизайн тайма надо от обычного фреймворка System.Core (3.5)
Re[3]: Подключение Design time свойств для контрола в Blend'
От: notacat  
Дата: 10.12.09 16:27
Оценка:
В общем, все печально, как раз этим же самым занимаюсь. Весь UI, который показывается в дизайнере (адорнеры или там PropertyValueEditor'ы), должен реализовываться в WPF. При этом надо ссылаться на свою Сильверлайтовскую сборку и, возможно, на еще что-нибудь от Сильверлайта. Происходит элементарная вещь — референсы путаются. Особенно, если есть xaml, у меня в тестовом проекте просто неизвестная ошибка компилятора возникает. Хотя все то же самое для WPF контролов уже работает.

Вот статья на эту тему с примерами:

http://karlshifflett.wordpress.com/2009/11/20/extensibility-series-wpf-silverlight-design-time-code-sharing-part-i/

Насколько я пока понимаю, идея следующая:

— в одной дизайн-тайм сборке (CiderControls.Common.VisualStudio.Design) есть ссылки только на WPF сборки. Там объявлен собственно весь дизайн-тайм, который требует чего-нибудь в дизайнере рисовать и т.д.

— отдельная дизайн-тайм сборка (CiderControls.Silverlight.VisualStudio.Design.Types) референсит сильверлайт сборки, которые нужны и занимается только тем, что возвращает правильные типы и свойства.

— и уже третья дизайн-тайм сборка (CiderControls.Silverlight.VisualStudio.Design) референсит первые две и собственно регистрирует метаданные. Именно эта сборка грузится дизайнером.

Карл пишет, что другие сценарии он даже не будет рассматривать, потому что там обязательно будут путаться типы от сильверлайта и от WPF.
Re[4]: Подключение Design time свойств для контрола в Blend'
От: INsideR Латвия  
Дата: 11.12.09 08:11
Оценка:
Здравствуйте, notacat, Вы писали:

N>В общем, все печально, как раз этим же самым занимаюсь. Весь UI, который показывается в дизайнере (адорнеры или там PropertyValueEditor'ы), должен реализовываться в WPF. При этом надо ссылаться на свою Сильверлайтовскую сборку и, возможно, на еще что-нибудь от Сильверлайта. Происходит элементарная вещь — референсы путаются. Особенно, если есть xaml, у меня в тестовом проекте просто неизвестная ошибка компилятора возникает. Хотя все то же самое для WPF контролов уже работает.


N>Вот статья на эту тему с примерами:


N>http://karlshifflett.wordpress.com/2009/11/20/extensibility-series-wpf-silverlight-design-time-code-sharing-part-i/


N>Насколько я пока понимаю, идея следующая:


N>- в одной дизайн-тайм сборке (CiderControls.Common.VisualStudio.Design) есть ссылки только на WPF сборки. Там объявлен собственно весь дизайн-тайм, который требует чего-нибудь в дизайнере рисовать и т.д.


N>- отдельная дизайн-тайм сборка (CiderControls.Silverlight.VisualStudio.Design.Types) референсит сильверлайт сборки, которые нужны и занимается только тем, что возвращает правильные типы и свойства.


N>- и уже третья дизайн-тайм сборка (CiderControls.Silverlight.VisualStudio.Design) референсит первые две и собственно регистрирует метаданные. Именно эта сборка грузится дизайнером.


N>Карл пишет, что другие сценарии он даже не будет рассматривать, потому что там обязательно будут путаться типы от сильверлайта и от WPF.


Спасибо за статью, дальше попробую делать как в статье. Пока-что xaml файл объявил как embedded resource и гружу через Xaml.Load.
Мудр тот, кто знает не многое, а нужное
Re[5]: Подключение Design time свойств для контрола в Blend'
От: notacat  
Дата: 11.12.09 14:11
Оценка:
INR>Спасибо за статью, дальше попробую делать как в статье. Пока-что xaml файл объявил как embedded resource и гружу через Xaml.Load.
Там еще на сайте поищите, где-то выложен исходный код дизайн-тайма для XAMLPowerToys, тоже интересно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.