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

Tridion “错误”;无法加载请求的类型“;使用TcmUploadAssembly上载DD4T.Templates.dll时,tridion,Tridion,尝试使用DD4T Tridion Tools文件夹中的TcmuploadaAssembly将DD4T.Templates.dll重新加载到Tridion 2011 SP1中-我已确保上载了必要的dll-DD4T.ContentModel.Contracts.dll、DD4T.ContentModel.dll、DD4T.Templates.Base.dll-但我不断收到“错误:无法加载更多请求的类型” 检查Fusion日志,我可以看到以下绑定问题: LOG: DisplayName = TcmUp

尝试使用DD4T Tridion Tools文件夹中的TcmuploadaAssembly将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.xmlserializer来自哪里

构建文件夹中有一个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关于注册.NET4的观点-我这样做的时候已经是昨晚很晚了

5.4版是Tridion 2009。我认为使用T2009中的TcmUploadAssembly无法与T2011配合使用。因此,我明确建议使用最新的TCMUPLOADAAssembly(针对T2011SP1的v6.1.0.966)

您是否已将模板dll
DD4T.ContentModel.Contracts.dll
DD4T.ContentModel.dll
DD4T.Templates.Base.dll
注册到TCM服务器上的GAC中?仅仅上传是不够的。看一看


我还看到你的错误是指.NET2。您是否使用.NET 4注册了DLL?

推荐的方法是从下载安装程序。 这会将DD4T.Templates.Merged.dll上载到Tridion中,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。

DD4T模板的GAC中不应该有什么内容吗?无法使上载到TCM的一个DLL引用上载到TCM的另一个DLL。这就是为什么任何通用功能通常都必须放在GAC中的原因,正如Nuno和Mihai所指出的(Mihai提到的DD4T页面上有记录)。或者,您可以使用DD4T模板安装程序。它将所有必需的DLL(DD4T.ContentModel、DD4T.ContentModel.Contracts和DD4T.Templates.Base)与实际模板合并到一个DLL中,并上载该DLL。在这种情况下,您不需要在GAC中输入任何内容。安装程序可以作为zip从下载。