Sitecore Glass.Mapper.Sc与Glass.Mapper.Sc.Core

时间:2016-12-20 04:00:33

标签: sitecore sitecore8

您好,Sitecoryians,

我正在将Sitecore 7.1 rev140130 webforms网站升级到Sitecore 8.2rev160729 MVC-5 / Webforms hybrid。我需要保持旧内容的运行。因为这只是后端的升级。但是计划开始在MVC中开发所有新组件等。随着内容页面的变化,我将逐步淘汰旧的Web表单。这项要求是由业务推动的。

旧网站使用Glass Mapper生成并映射来自sitecore的内容。通过TDS中的t4脚本使用旧的Glass.Mapper.Sc.CasteWindsor v3.2.1.21。

我查看了Glass主页。 Glass.Mapper.Sc是您现在需要的所有状态。但是有一些相互矛盾的教程说明你需要安装MVC-4或MVC-5。我想我现在会忽略它们并坚持Glass建议安装。

麻烦的是,旧的Model属性标记有类似的属性 [SitecoreId]& [SitecoreInfo(SitecoreInfoType.Language)]

这似乎不在Glass.Mapper.Sc库中。我可以在可用的nugets包中找到这些属性的唯一参考。是Glass.Mapper.Sc.Core包。

我尝试在模型项目中安装该软件包。只是为了看到这个:

  

启动软件包安装到项目[project] .Logic.Models   安装失败。滚回来...   错误:无法解析依赖项。 ' Glass.Mapper.Sc.Core 4.2.1.189'不是>兼容&#;; Glass.Mapper.Sc 4.3.1.194约束:Glass.Mapper.Sc.Core(≥> 4.3.1.194)'。   安装完毕。

如果我对Glass.Mapper.Sc进行降级,我觉得我可能会犯错误,所以我可以安装Core库。我可能会在以后用脚射击自己。因为我仍然需要安装WFFM和社交连接模块替换内部sc8社交组件..

我的理解是新的Glass.Mapper.Sc包应该满足我的所有需求。

我应该降低成绩并尝试将旧版本与Core库一起使用?

或者我应该重构模型以使用新的属性系统。那可能是什么?

(请记住,项目中大约有50多个模型。所以我不想做这件事。)

1 个答案:

答案 0 :(得分:2)

Glass Mapper在版本4中发生了重大变化,最大的变化是移除和依赖Castle Windsor。 release blog post中列出了更改列表。

Nuget包/安装程序也已更改,因此现在只有一个Nuget包而不是之前必须安装的几个包。为了支持这一点,Nuget安装程序会检查是否存在Sitecore.Kernel.dllSystem.Web.Mvc

  

为了简单起见,V4使用Powershell脚本来决定添加到项目的引用,它会检查Sitecore.Kernel版本和System.Web.Mvc版本,然后安装相应的Glass.Mapper.Sc和Glass .Mapper.Sc.Mvc程序集。

我的建议是删除旧的V3程序集和Nuget引用,确保在项目中正确引用上述2个DLL,然后再将Glass V4 Nuget安装到这些项目中。

SitecoreIdSitecoreInfo属性仍在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