将我现有的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
答案 0 :(得分:5)
看起来您有两个程序集:Tridion.Extensions.Events.dll
和Tridion.Extensions.Events.MDO.dll
。由于您在Tridion.ContentManager.config中按完整路径引用TcmExtension DLL,因此您不能在同一目录中拥有依赖于另一个的TcmExtension DLL。
解决方案是将“共享库”(可能是Tridion.Extensions.Events.MDO.dll
)放在GAC中。
答案 1 :(得分:1)
幸运的是,.NET程序集包含元数据中所需的所有依赖项信息。面对这个问题,我通常会尝试使用可以读取它的工具打开程序集,例如ILDASM或IlSpy。这为你提供了一个具体的事物列表,而不是模糊和神秘的“或其中一个依赖”。
另一种方法是使用FUSLOGVW来监视.NET运行时查找程序集的位置。