将Tridion 2009事件系统迁移到Tridion 2011 SP1时出错

时间:2012-05-09 21:46:26

标签: tridion

将我现有的Tridion 2009事件DLL(在2011服务器上编译)添加到bin目录并在Content Manager Config文件中注册DLL后,GUI现在返回以下错误。我已经检查了事件日志,Tridion日志等有关“缺失依赖”的任何想法的更多细节吗?

Could not load file or assembly 'Tridion.Extensions.Events, Version=1.0.20.521,
Culture=neutral, PublicKeyToken=ecb60dbe3cbb7440' or one of its dependencies. 
The system cannot find the file specified.

Unable to get LangID of User (tcm:0-2851-65552). Initialization of the extension
'C:\Program Files (x86)\Tridion\bin\Tridion.Extensions.Events.MDO.dll' failed.

System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly,ObjectHandleOnStack) 
    System.Reflection.RuntimeAssembly.GetExportedTypes() 
    Tridion.ContentManager.Extensibility.TcmExtension.LoadExtensions() 
    Tridion.ContentManager.Extensibility.TcmExtension.LoadExtensions() 
    Tridion.ContentManager.Extensibility.TcmExtension.InitializeExtensions() 
    Tridion.ContentManager.Extensibility.EventSystem.DeliverEvent(IEnumerable`1,TcmEventArgs,EventDeliveryPhase) 
    Tridion.ContentManager.Extensibility.EventSystem.DeliverEvent(IdentifiableObject,TcmEventArgs,EventDeliveryPhase) Tridion.ContentManager.IdentifiableObject.Load(LoadFlags,Boolean) 
    Tridion.ContentManager.IdentifiableObject.Load(LoadFlags) 
    Tridion.ContentManager.BLFacade.IdentifiableObjectFacade.Read(UserContext,String,XMLReadFilter) XMLState.GetPropertyElem XMLState.GetProperty User.LangID

2 个答案:

答案 0 :(得分:5)

看起来您有两个程序集:Tridion.Extensions.Events.dllTridion.Extensions.Events.MDO.dll。由于您在Tridion.ContentManager.config中按完整路径引用TcmExtension DLL,因此您不能在同一目录中拥有依赖于另一个的TcmExtension DLL。

解决方案是将“共享库”(可能是Tridion.Extensions.Events.MDO.dll)放在GAC中。

答案 1 :(得分:1)

幸运的是,.NET程序集包含元数据中所需的所有依赖项信息。面对这个问题,我通常会尝试使用可以读取它的工具打开程序集,例如ILDASM或IlSpy。这为你提供了一个具体的事物列表,而不是模糊和神秘的“或其中一个依赖”。

另一种方法是使用FUSLOGVW来监视.NET运行时查找程序集的位置。