【发布时间】:2012-04-04 21:08:44
【问题描述】:
尝试使用 DD4T Tridion Tools 文件夹中的 TcmUploadAssembly 将 DD4T.Templates.dll 重新上传到 Tridion 2011 SP1 - 我已确保上传了必要的 DLL - DD4T.ContentModel.Contracts.dll、DD4T.ContentModel.dll , DD4T.Templates.Base.dll - 但我不断收到“错误:无法再加载一种请求的类型”。
查看Fusion日志,可以看到如下绑定问题:
LOG: DisplayName = TcmUploadAssembly.XmlSerializers, Version=5.4.0.509, Culture=neutral, PublicKeyToken=360aac4d3354074b, processorArchitecture=MSIL
(Fully-specified)
LOG: Appbase = file:///D:/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = TcmUploadAssembly.exe
Calling assembly : System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config.
LOG: Post-policy reference: TcmUploadAssembly.XmlSerializers, Version=5.4.0.509, Culture=neutral, PublicKeyToken=360aac4d3354074b, processorArchitecture=MSIL
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///D:/TcmUploadAssembly.XmlSerializers.DLL.
LOG: Attempting download of new URL file:///D:/TcmUploadAssembly.XmlSerializers/TcmUploadAssembly.XmlSerializers.DLL.
LOG: Attempting download of new URL file:///D:/TcmUploadAssembly.XmlSerializers.EXE.
LOG: Attempting download of new URL file:///D:/TcmUploadAssembly.XmlSerializers/TcmUploadAssembly.XmlSerializers.EXE.
LOG: All probing URLs attempted and failed.
不知道这个 TcmUploadAssembly.XmlSerializers 来自哪里?
构建文件夹中有一个 DD4T.ContentModel.XmlSerializers.dll,但它似乎与其他文件夹合并形成 DD4T.Templates.merged.dll - 但我不知道这是做什么用的。
不确定从哪里开始 - 这是 DD4T 问题还是 TcmUploadAssembly 问题? (我在 Tridion 2011 SP1 安装中尝试了 TcmUploadAssembly 相同的步骤,但得到了相同的错误,尽管是更新的 TcmUploadAssembly.XmlSerializers,版本 6.1.0.996)
编辑 为混淆道歉 - 我已将 DD4T 程序集添加到 GAC 中。我原来的帖子“我已确保上传了必要的 DLL”具有误导性,但我的意思是加载到 GAC 中!
我会检查一下 Mihai 关于注册 .NET 4 的观点 - 昨晚我这样做的时候已经很晚了!
【问题讨论】:
-
对于 DD4T 模板,GAC 中是否应该包含一些内容?
-
没有办法让您上传到 TCM 的一个 DLL 引用您上传到 TCM 的另一个 DLL。这就是为什么通常必须将任何通用功能放入 GAC 的原因,正如 Nuno 和 Mihai 所指出的那样(正如 Mihai 所指的 DD4T 页面上所记录的那样)。
标签: tridion