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

Sitecore Glass.Mapper.Sc与Glass.Mapper.Sc.Core,sitecore,sitecore8,Sitecore,Sitecore8,嗨,锡特科里人 我正在将Sitecore 7.1 rev140130 webforms上的一个网站升级为Sitecore 8.2rev160729 MVC-5/webforms hybrid。我需要保持旧内容运行。因为这只是后端的升级。但我计划开始在MVC中开发所有新组件等。随着内容页的变化,我将逐步淘汰旧的web表单。这项要求是业务部门强加给我的 旧站点使用Glass Mapper从sitecore生成和映射内容。通过TDS中的t4脚本使用旧的Glass.Mapper.Sc.CasteWind

嗨,锡特科里人

我正在将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

我浏览了一下玻璃主页。Where is声明Glass.Mapper.Sc是您现在所需要的全部。但是有一些相互矛盾的教程说明您需要安装MVC-4或MVC-5。我想我会暂时忽略它们,坚持安装玻璃

问题是,旧模型属性使用以下属性进行标记: [SitecoreId]&[SitecoreInfo(SitecoreInfoType.Language)]

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

我试图在models项目中安装该软件包。看看这个:

开始将包安装到项目[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以便安装核心库,我可能会犯错误。我以后可能会朝自己的脚开枪。因为我仍然需要安装WFFM和社交连接模块,并将其替换为内部sc8社交组件

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

那么,我是否应该降级并尝试使用旧版本的核心库呢

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


(请记住,该项目中大约有50多个模型。因此,我不想这样做。)

Glass Mapper在版本4中进行了重大更改,最大的更改是删除并依赖于Castle Windsor。中列出了更改的列表

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

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

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

和属性仍在
Glass.Mapper.Sc
库中,核心库已被删除/重构。我不相信此命名空间自V3以来已发生更改,但请确保您正在使用GlassV3Header.tt文件,并且
使用Glass.Mapper.Sc.Configuration.Attributes
命名空间在该文件中是正确的


谢谢你的回答。我不需要更改生成脚本(此时),我在models项目中找到了对CastleWindsor的旧引用,在另一个项目中也没有对system.web.mvc的引用。所以我觉得这让我很扫兴。另外,出于某种原因,Nuget没有将Glass.Mapper.Sc包标记为包含我需要的引用。Nuget只会返回Glass.Mapper.Sc.Core包。我也很喜欢输入这些注释的方式StackOverflow…./我假设nuget软件包没有看到基于powershell脚本的引用为您解决了这个问题。因此,在nuget搜索索引中没有连接。再次感谢您指出这一点。我发现完全删除旧的V3引用,然后再次添加V4引用更安全/更好,这样可以确保PowrShell脚本正确运行。不确定是否完全有必要。。。但很高兴你把它整理好了。