使用TcmUploadAssembly上载DD4T.Templates.dll时出错“无法加载请求的类型”

时间:2012-04-04 21:08:45

标签: tridion

尝试使用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的观点 - 昨晚我做的时候已经很晚了!

2 个答案:

答案 0 :(得分:5)

版本5.4是Tridion 2009.我不认为使用T2009中的TcmUploadAssembly可以使用T2011。所以我绝对建议使用最新的TcmUploadAssembly(T2011SP1的v6.1.0.966)。

您是否已将模板化DLL DD4T.ContentModel.Contracts.dllDD4T.ContentModel.dllDD4T.Templates.Base.dll注册到TCM服务器上的GAC中?仅上传它们是不够的。看看http://code.google.com/p/dynamic-delivery-4-tridion/wiki/40_Templates

此外,我看到您的错误是指.NET 2.您是否使用.NET 4注册了DLL?

答案 1 :(得分:0)

建议的方法是从https://code.google.com/p/dynamic-delivery-4-tridion/downloads/detail?name=DD4T-template-installer-1.31.zip下载安装程序。 这会将DD4T.Templates.Merged.dll上传到Tridion,其中包含模板DLL + ILMerge合并在一起的所有相关DLL。

如果您因任何原因不喜欢ILMerge,可以将以下DLL放在GAC中:

  • DD4T.ContentModel.dll
  • DD4T.ContentModel.Contracts.dll
  • DD4T.Templates.Base.dll
  • DD4T.ContentModel.XmlSerializers.dll

您可以通过下载源代码,打开Dynamic Delivery Publishing.sln解决方案并构建它来获取这些DLL。