Как писать Silverlight Дизайн времени для всех дизайнеров: Visual Studio 2008, Blend 2; Blend 3, а также Visual Studio 2010
Введение
Это является частью серии по дизайну времени осуществления изменений в Silverlight Инструментарий марта 2009 выпуска . Этот пост посвящен разрыву изменения в рамках расширения дизайнер представил в Silverlight 3/Blend 3/Visual Studio 2010, а также как разрабатывать Silverlight время разработки для поддержки всех дизайнеров: Visual Studio 2008/Blend 2, а также Visual Studio 2010/Blend 3.
Silverlight 2 Дизайн Время для Visual Studio 2008 и Blend 2
Visual Studio и Blend одни и те же рамки расширяемости конструктора, и использовать его как для WPF и Silverlight. WPF расширяемости конструктора на MSDN, вероятно, лучшая рекомендация для расширения рамок дизайнера. Декабрь 2008 Выпуск из Silverlight Инструментарий основан на Silverlight 2 (ака SL2), и дизайнер поддержка Visual Studio 2008 (ака VS9) и Blend 2. Это хороший реальном примере продемонстрировать, как разрабатывать Silverlight 2 проектирования возможности для VS9 и Blend 2. Мой блог Дизайн Время выполнения функций в Silverlight Инструментарий подробно объясняет, как это делается, и в рамках реализации читатели могут использовать в своей работе по осуществлению время разработки.
Напомним, что Silverlight 2 дизайн временные рамки для Visual Studio 2008 и Blend 2 в двух словах:
- MWD: дизайн расширения временных рамок подвергается через множество узлов, в первую очередь Microsoft.Windows.Design.dll, Microsoft.Windows.Design.Extensibility.dll и Microsoft.Windows.Design.Interaction.dll. Совокупность этих сборок называются MWD. Они устанавливаются в соответствии DevEnvDir%% \ PublicAssemblies (C: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PublicAssemblies в 32-битном OS, или C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PublicAssemblies в 64-битной ОС). Они также GAC-ред. Большинство время разработки проектов необходимо ссылаться на эти MWD DLL. Visual Studio 2008 и Blend 2 использования MWD версия 3,5.
- Naming Convention: Visual Studio и Blend нагрузки узлов дизайн времени, используя соглашение об именовании: для контрольной сборки Foo.dll В.С., Blend найдет свое время проектирования узлов с именем Foo.Design.dll, Foo.VisualStudio.Design.dll и Foo.Expression.Design.dll, в том же каталоге, где Foo.dll есть, или каталога Дизайн югу. Visual Studio загружает Foo.Design.dll и Foo.VisualStudio.Design.dll, а Blend будет загружать Foo.Design.dll и Foo.Expression.Design.dll. Поэтому рекомендуется положить проектирования функции общих для всех дизайнеров. Design.dll и положить Visual Studio и Blend время разработки конкретных функций. VisualStudio.Design.dll и. Expression.Design.dll соответственно.
- Точка входа: когда Visual Studio или Blend нагрузки время сборки конструкции, он использует отражение, чтобы найти все классы, которые реализуют IRegisterMetadata , и призывает его единственный метод регистра . Silverlight Инструментарий декабря 2008 Выпуск имеет срок внедрения дизайна рамках подробно говорилось в предыдущих блога Дизайн времени Функция реализации в Silverlight Инструментарий .
Ниже скриншоты Silverlight.Controls.Design.sln в Silverlight 2 Инструментарий источник в марте 2009 Выпуск свидетельствует о реализации SL2 время дизайн для VS9 Blend 2 и выше:
Что изменилось в Silverlight 3, Blend 3 и Visual Studio 2010
Как указано в конструкторе WPF расширяемости архитектуры на MSDN:
Конструктор WPF поддерживает полный рамках расширения. Expression Blend поддерживает только редакторы свойств, загрузка метаданных и лицензирование. Смесь не поддерживает меню действий и adorners.
Blend 2 имеет выше ограниченную поддержку время разработки Silverlight тоже, но Visual Studio 2008 имеет никакой поддержки, за время разработки Silverlight (только значки, метаданные загрузки на несколько атрибутов, например, ToolboxBrowsableAttribute): это больше, чем зритель дизайнера. Чтобы иметь WPF паритета на время разработки Silverlight поддержку, Blend 3 и Visual Studio 2010 (ака VS10) должны представить нарушение изменений в рамках расширения дизайнера (т.е. MWD), в первую очередь:
- MWD: большинство дизайнеров рамках расширения API остаются теми же, но их физические изменения упаковки: Microsoft.Windows.Design.dll ушел, и версии всех MWD узлов изменяется от 3,5 до 4,0. Перед Visual Studio 2010 Beta1, единственный способ получить новые MWD осуществляется через Blend 3 просмотра, и его версия 3,7 вместо 4,0 на данный момент:
- Точка входа: вместо того чтобы отражать через IRegisterMetadata реализации, Blend 3 и Visual Studio 2010 использовать новую сборку атрибутом ProvideMetadataAttribute и metadataProviderType должны осуществлять IProvideAttributeTable:

- Naming Convention: из-за нарушения изменения, такие как MWD версии и точки входа, существующие сборки проектирования развитых против 3,5 MWD не будет загружаться в Blend 3 и Visual Studio 2010, вы должны написать новое время проектировании новых 4,0 MWD для Blend 3 и Visual Studio 2010. Хотя это нормально для Blend (поскольку вы можете использовать только Blend 3 с Silverlight 3 и 2 Blend с Silverlight 2), это создает проблемы для Visual Studio, поскольку вы можете использовать Visual Studio 2008 для Silverlight 3 развития, а также Visual Studio 2010 для Silverlight 2 развития.
Ниже таблице перечислены все поддерживаемые сценарии и версии MWD используется для загрузки узлов время разработки:
| SL \ конструктора | VS9 | VS10 | Blend2 | Blend3 |
| SL2 | MWD3.5 | MWD4.0 | MWD3.5 | |
| SL3 | MWD3.5 | MWD4.0 | MWD4.0 |
Мы не можем строить один дизайн время сборки в отношении двух несовместимых MWDs, поэтому мы должны создать два отдельных проектирования узлов, один друг против MWD. Дизайн собраний время загружены по имени, и мы не можем иметь два собрания с таким же именем в том же месте, поэтому монтаж проектирование механизм загрузки (например, соглашение об именовании) должно измениться, чтобы несколько версий одного и того же проектирование монтаж сосуществовать.
В ожидании нового именования выйти с Blend 3 и Visual Studio 2010 RTM, что мы можем сделать что-нибудь умное в настоящее время для поддержки как VS9 и VS10. Помните текущего именования позволяет Visual Studio и Blend каждой загрузки 2 узлов конструкции:
| DLL \ конструктора | Visual Studio | Смесь |
| Foo.Design.dll | X | X |
| Foo.VisualStudio.Design.dll | X | |
| Foo.Expression.Design.dll | X |
так что мы можем построить два собрания с различными версиями MWD:
- В Silverlight 3, мы можем иметь общие. Design.dll строить против 4,0 MWD, поэтому он может быть загружен как VS10 и Blend 3. Тогда мы имеем. VisualStudio.Design.dll построить MWD против 3,5 и дублировать все от общей. Design.dll, поэтому он может быть загружен VS9. Существует один вопрос, хотя незначительные: у нас нет места, чтобы положить Visual Studio особенности времени дизайн для VS10, как с помощью ToolboxBrowsableAttribute (ложь), чтобы скрыть некоторые элементы управления с более переполненном инструментов Visual Studio, поскольку VS10 не могу загрузить . VisualStudio.Design.dll построить MWD против 3,5. Это будет решать с новым именования раз Visual Studio 2010 RTM.
| DLL \ MWD \ конструктора | MWD | VS9 | VS10 | Blend3 |
| Foo.Design.dll | 4,0 | X | X | |
| Foo.VisualStudio.Design.dll | 3,5 | X | ? | |
| Foo.Expression.Design.dll | 4,0 | X |
- В Silverlight 2, такой же подход: иметь общие. Design.dll строить против 4,0 MWD, но то и другое. VisualStudio.Design.dll и. Expression.Design.dll построить MWD против 3,5 и дублировать все в общем. Design.dll . Таким образом, как и VS9 Blend 2 будет работать нормально, но с тем же вопросом, что нет места, чтобы положить Visual Studio особенности для VS10. Опять же, которые будут решаться с новым именования в VS10.
| DLL \ MWD \ конструктора | MWD | VS9 | VS10 | Blend2 |
| Foo.Design.dll | 4,0 | X | X | |
| Foo.VisualStudio.Design.dll | 3,5 | X | ? | |
| Foo.Expression.Design.dll | 3,5 | X |
Дизайн Время выполнения функций в Silverlight 3 Инструментарий
MWD
Дизайн-проектов в Silverlight 3 Инструментарий в марте 2009 выпуска после вышеупомянутой схемы для поддержки как Visual Studio 2008 и Visual Studio 2010, а также Blend 3.
Скачать марта 2009 выпуска , распаковать исходный код, нагрузка Silverlight.Controls.Design.sln в Visual Studio 2008. Используйте простые Control.Input.Design проекта, например:
- Дизайн-проекты для VS9/Blend3 необходимо сослаться на новый 4,0 MWD. Здесь мы используем уже созданных событий ссылаться на CopySystemWindows.bat найти Blend 3 и копия 2 MWD библиотек DLL в каталог исполняемых файлов.
- Обратите внимание на незначительные изменения в CopySystemWindows.bat файла: нам нужно привести "%% THIS_DIR \ Binaries \ Blend3" (линии желтого цвета) для рассмотрения дел, где есть место в путь к каталогу, исходный код распаковать.
Если вам не нравится хрупкой CopySystemWindows.bat файл или с помощью создания событий, вы можете установить номер пути, чтобы помочь Visual Studio, где найти новые MWD, как показано ниже. Единственное ограничение в том, что вам нужно указать как% ProgramFiles% и% ProgramFiles (x86)% и сделать его построить на x86 и x64 машины.
Ссылка пути настройки сохраняются в. Csproj.user файл:
<Проект xmlns = " http://schemas.microsoft.com/developer/msbuild/2003 " >
<PropertyGroup>
<ReferencePath> C: \ Program Files \ Microsoft \ Expression Blend 3 Предварительный \; C: \ Files программы (x86) \ Microsoft Expression Blend 3 Предварительный \ </ ReferencePath>
</ PropertyGroup>
</> Проект
Metadata.cs
Я использую те же рамки реализации, как описано в Дизайн Время выполнения функций в Silverlight Инструментарий , с некоторыми незначительными изменениями:
- Я переехал ссылки на общие файлы Extensions.cs и MetadataBase.cs Controls.Design.Common из папки в папку решение с таким же названием;
- Metadata.cs в. Проектирование и. Expression.Design проектов используют новые точки входа: использование атрибута ProvideMetadata собраний, и осуществлять IProvideAttributeTable интерфейс;
- добавить к сведению, что все в AddAttributes () метод должен быть повторен в соответствующий. VisualStudio.Design проекта.
. VisualStudio.Design проектов по-прежнему использовать старый интерфейс IRegisterMetadata в MWD 3,5, но:
- в папке Controls.Design приведены ссылки на все * Metadata.cs файлов в соответствующий. Дизайн-проект;
- AddAttributes () метод дублирует содержание AddAttributes () в соответствующий. Дизайн-проект.
Заключение
Хотя разрыв изменения в MWD может вызвать некоторые неудобства, необходимо внедрить в богатых опыт проектирования для Silverlight как WPF. Эта должность описывается способ справиться с разрывом изменений и по-прежнему поддерживать все существующие конструкторы: Visual Studio 2008, Blend 2, а Blend 3. После Visual Studio 2010 общедоступна, я блог о новых именования, и как Инструментарий проектирования работы в Visual Studio 2010. Оставайтесь с нами!
12/5/2009: Обновление для VS2010 Beta2
Для решения указанной задачи поддержки и Visual Studio 2008/Blend2 и Visual Studio 2010/Blend3, в которых используются несовместимые версии MWDs (V3.5 против. V4.0), соглашение об именовании для проектирования узлов усиливается из VS2010 Beta2 и Blend 3:
для выполнения Foo.dll собраний, общий время сборки конструкция называется Foo.Design *. DLL, Visual Studio конкретных время сборки конструкция называется Foo.VisualStudio.Design *. DLL, а также конкретные Blend время сборки конструкция называется Foo . Expression.Design *. DLL, где * может быть равно нулю или более допустимых символов для имен файлов. Когда дизайнер (например, Visual Studio или Blend) пытается загрузить время сборки дизайн и некоторые подходят именования, ноль или один будет загружен:
- Если версия MWD, на которые ссылается времени собраний дизайн различных основной номер версии, чем в MWD версии дизайнера, а затем во время разработки собраний не будет загружаться и обойти.
- Если более чем один дизайн-время сборки совместим с MWD в версии дизайнера, конструктора нагрузки 1 составлены в отношении высших MWD вариант, который меньше или равен в MWD версии дизайнера.
Silverlight 3 SDK ГДР 2 (также устанавливается автоматически VS2010) и Silverlight 3 Инструментарий октября 2009 Выпуск использовать новые именования поддержку как VS2008 и VS2010. Возьмите System.Windows.Controls.dll например, System.Windows.Controls.VisualStudio.Design.dll построен в отношении MWD 3,5 и используется VS2008, который использует старый именования, новая System.Windows.Controls.Toolkit. VisualStudio.Design.4.0.dll построен в отношении MWD 4,0 добавляется для VS2010, который понимает новые именования. См. Silverlight Дизайн Время Ассамблеи для получения дополнительной информации.








Последние комментарии