0

我们正在运行 Sitecore 7.2,并正在探索将 Glass.Mapper.Sc.CastleWindsor 用于一个刚刚开始的大型项目。我们遇到了问题。

我们有以下解决方案: 1. 核心可重用代码的基础项目 2. 可重用 web 代码、控件等的基础 web 项目(参考 #1) 3. 领域模型和其他非 web 的项目特定项目代码(参考#1) 4. Project-specific web project(参考#1,2,3)

项目#2 和#4 指向同一个Web 根目录。我们运行 Sitecore 的多站点实例,但这个项目是我们在 7.x 版本上的第一个项目;其他人将适时迁移。

在 GlassMapperScCustom GlassLoaders() 方法中,我们有这个:

return new IConfigurationLoader[] { new SitecoreAttributeConfigurationLoader("{assembly name of project # 3}") };

对于我们的第一个概念验证,我们在项目 3 中找到了一个域模型类,并试图让 Glass 映射在项目 4 中工作。没有骰子。以下都返回一个项目,但没有填写字段:

new SitecoreContext().GetCurrentItem<{class name}>()
new SitecoreContext().GetItem<{class name}>("path")
new SitecoreContext().GetItem<{class name}>(new Guid("Sitecore GUID"))

我们已经尝试在所有四个项目中安装 nuget 包 Glass.Mappers.Sc.CastleWindsor,但无济于事。我们也尝试过使用 VersionDisabler、检查网站语言等,但也没有成功。

Glass.Mapper.Sc 教程和一些示例代码不一致,我怀疑这是问题的一部分。一些教程展示了旧的做事方式,另一些展示了新的,但我们现在已经尝试了教程中显示的所有方式来加载我们的类。

该页面... http://www.glass.lu/download/glass-sitecore-mapper/ ...似乎表明Glass仅支持7.0版的Sitecore。这是准确的,还是只是更过时的信息?这些链接似乎从那个 Marketplace 页面转到旧的 Sitecore Mapper 网站。

我们需要尽快完成这项工作,否则我们将不得不放弃在这个大型项目中使用 Glass,我们不愿意这样做,因为这将意味着进一步使用自定义项目生成器或裸项目访问。感谢您提供任何帮助。

4

2 回答 2

2

我现在在 Sitecore 7.2 中使用旧版本的 Glass (2.0.11),我对此没有任何问题。基本上,这就是我从Global.asax(不涉及 IoC)加载我的程序集的方式:

using Glass.Sitecore.Mapper.Configuration.Attributes;
var loader = new AttributeConfigurationLoader(new[] {
  "namespace, assembly",
  "namespace#2, assembly#2",
});

var ctx = new Glass.Sitecore.Mapper.Context(loader);

类名可能有点不同,但这给了你一个粗略的想法。

另外,我注意到我们namespace, assembly在初始化 Glass 时使用了这个符号。也许这就是原因?

于 2014-07-11T06:46:11.310 回答
1

您使用的是哪个版本的 Glass?在最近的版本中,SitecoreAttributeConfigurationLoader已弃用。对于基本使用,您根本不需要指定配置加载器。尝试使用开箱即用的 GlassMapperScCustom。如果这不起作用,请尝试Glass.Mapper.Configuration.Attributes.AttributeConfigurationLoader

于 2014-07-12T00:08:39.453 回答