2016-12-20 50 views
2

嗨研究員Sitecoryians,Sitecore的Glass.Mapper.Sc VS Glass.Mapper.Sc.Core

我在升級網站7.1 rev140130 web表單坐在Sitecore的到Sitecore的8.2rev160729的過程就是MVC-5/Web表單混合。我需要保持舊內容的運行。因爲這只是後端的升級。但計劃開始在MVC中開發所有新組件等。隨着內容頁面的變化,我將淘汰舊的Web表單。這項要求是由我的業務推動。

舊網站使用Glass Mapper來生成和映射來自sitecore的內容。在TDS中通過t4腳本使用舊的Glass.Mapper.Sc.CasteWindsor v3.2.1.21。

我查看了玻璃主頁。在哪裏指出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這樣我就可以安裝核心庫。稍後我可能會在腳下開槍自殺。因爲我還是要安裝WFFM和社會的連接模塊與內部SC8社交組件更換..

我的理解是,新Glass.Mapper.Sc包應包括我所有的需要。

這樣,我倒級,並嘗試使用舊版本的核心庫?

或者我應該重構模型,使用新屬性系統。那可能是什麼?

(請記住,大約有50多個型號的項目。因此,它不是東西,我想需要做的..)

回答

2

玻璃映射在4版本顯著變化,最大的變化是對溫莎城堡的拆除和依賴。 release blog post列出了更改列表。

的NuGet包/安裝也已更改,因此現在只有一個單一的NuGet包,而不是你以前曾安裝了好幾個。爲了支持這項工作,爲Sitecore.Kernel.dllSystem.Web.Mvc的存在的NuGet安裝程序將檢查:

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),然後重新安裝玻璃V4的NuGet這些項目。

SitecoreIdSitecoreInfo屬性仍處於Glass.Mapper.Sc庫,核心庫已被刪除/重構。我不相信這個命名空間自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