2016-12-20 10 views
2

Привет Fellow Sitecoryians,Sitecore Glass.Mapper.Sc против Glass.Mapper.Sc.Core

Я нахожусь в процессе обновления сайта, сидя на Sitecore 7.1 rev140130 WebForms для Sitecore 8.2rev160729 MVC-5/WebForms гибридный. Мне нужно, чтобы старый контент работал. Потому что это просто обновление бэкэнда. Но планируйте начать разработку в MVC для всех новых компонентов и т. Д. Я буду поэтапно отключать старые веб-формы по мере изменения страниц контента. Это требование навязывается мне бизнесом.

На старом сайте используется Glass Mapper для создания и отображения содержимого с сайта sitecore. Использование старого Glass.Mapper.Sc.CasteWindsor v3.2.1.21 через t4-скрипты в TDS.

Я просмотрел домашнюю страницу Glass. Где указано, что Glass.Mapper.Sc - это все, что вам нужно сейчас. Но есть противоречивые учебники, в которых говорится, что вам нужно установить MVC-4 или MVC-5. Я подумал, что сейчас проигнорирую их и придерживаюсь предложенной Glass.

Проблема заключается в том, что старые свойства модели помечены атрибутами, как [SitecoreId] & [SitecoreInfo (SitecoreInfoType.Language)]

Который, кажется, не быть в библиотеке Glass.Mapper.Sc. Единственная ссылка, которую я могу найти из этих атрибутов в доступных пакетах nugets. Является пакетом Glass.Mapper.Sc.Core.

Я попытался установить этот пакет в проект модели. Просто, чтобы увидеть это:

Start package installation to project [project].Logic.Models Installation failed. Rolling back... Error: Unable to resolve dependencies. 'Glass.Mapper.Sc.Core 4.2.1.189' is not > compatible with 'Glass.Mapper.Sc 4.3.1.194 constraint: Glass.Mapper.Sc.Core (≥ > 4.3.1.194)'. Installation finished.

Я чувствую, что я мог бы сделать ошибку, если я вниз класса Glass.Mapper.Sc так что я могу установить библиотеку Core. Я мог бы стрелять в ногу позже. Потому что мне еще нужно установить WFFM и модуль социального подключения, заменяя внутренние социальные компоненты sc8.

Насколько я понимаю, новый пакет Glass.Mapper.Sc должен охватывать все мои потребности.

Должен ли я понизить класс и попытаться использовать более старую версию с библиотеками Core?

Или мне нужно реорганизовать модели для использования новой системы атрибутов. Что это может быть?

(Имейте в виду, что есть около 50 + модели в проекте. Так что это не то, что я хотел бы иметь, чтобы сделать ..)

ответ

2

стекла Mapper был значительно изменен в версии 4 и самое большое изменение было удаление и зависимость от замка Виндзор. Список изменений был указан в release blog post.

Пакет/установщик Nuget также был изменен, поэтому теперь существует только один пакет Nuget вместо нескольких, которые вы ранее должны были установить. Для поддержки этого, программа установки проверяет NuGet на наличие Sitecore.Kernel.dll и System.Web.Mvc:

To make things simpler V4 uses a Powershell script to decided which references to add to your project, it checks both the Sitecore.Kernel version and the System.Web.Mvc version and then installs the appropriate Glass.Mapper.Sc and Glass.Mapper.Sc.Mvc assembly.

Мое предложение было бы удалить старые V3 сборки и ссылки NuGet, убедитесь, что выше 2 библиотеки DLL правильно ссылки в вашем проекте (s), а затем снова установите Glass V4 Nuget в эти проекты.

Атрибуты и SitecoreInfo все еще находятся в библиотеке Glass.Mapper.Sc, библиотека Core удалена/реорганизована.Я не верю, что это пространство имен изменилось с V3, но убедитесь, что вы используете файл GlassV3Header.tt , а в этом файле - пространство имен using Glass.Mapper.Sc.Configuration.Attributes.

https://github.com/HedgehogDevelopment/tds-codegen/blob/master/Sitecore.Master/Code%20Generation%20Templates/GlassV3Header.tt#L32

+1

Спасибо за ваш ответ. Мне не нужно было менять сценарии генерации (на данный момент) Мне удалось найти старую ссылку на CastleWindsor в проекте моделей, и у меня не было ссылки на system.web.mvc в другом проекте. Поэтому я думаю, что это меня отбросило. Плюс Nuget по какой-то причине не помечает пакет Glass.Mapper.Sc как содержащий ссылки, которые мне нужны. Nuget вернет пакет Glass.Mapper.Sc.Core. – Anthony

+0

Любовь, как вводить автоматические ответы на эти комментарии тоже StackOverflow ....:/Я предполагаю, что пакет nuget не видел ссылок, основанных на сценариях powershell, которые работают для вас. Таким образом, в индексировании поиска nuget не было бы связи. Еще раз спасибо за указание на это. – Anthony

+0

Я нашел, что безопаснее/лучше полностью удалить старые ссылки V3, а затем снова добавить V4, чтобы убедиться, что скрипты PowrShell работают правильно. Не уверен, что это абсолютно необходимо ... но рад, что вы его отсортировали. – jammykam