Ошибка при переносе системы событий Tridion 2009 на Tridion 2011 SP1

После добавления моей существующей библиотеки DLL событий Tridion 2009 (скомпилированной на сервере 2011) в каталог bin и регистрации DLL в файле конфигурации Content Manager графический интерфейс теперь возвращает ошибку ниже. Я проверил журналы событий, журналы 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

person Chris Morgan    schedule 09.05.2012    source источник
comment
Вы перезапустили все SDL Tridion Services, IIS и соответствующие пакеты COM+?   -  person Chris Summers    schedule 10.05.2012


Ответы (2)


Похоже, у вас есть две сборки: Tridion.Extensions.Events.dll и Tridion.Extensions.Events.MDO.dll. Поскольку вы ссылаетесь на библиотеки DLL TcmExtension по их полному пути в Tridion.ContentManager.config, вы не можете иметь одну, которая зависит от другой, в том же каталоге.

Решение состоит в том, чтобы поместить «общую библиотеку» (вероятно, Tridion.Extensions.Events.MDO.dll для вас) в GAC.

person Frank van Puffelen    schedule 10.05.2012

К счастью, сборки .NET содержат всю необходимую информацию о зависимостях в своих метаданных. Столкнувшись с этой проблемой, я бы вообще попробовал открыть сборку инструментом, умеющим это читать, например, ILDASM или IlSpy. Это дает вам конкретный список того, что нужно искать, вместо расплывчатого и загадочного «или одной из его зависимостей».

Альтернативный подход — использовать FUSLOGVW для отслеживания того, где среда выполнения .NET ищет сборки.

person Dominic Cronin    schedule 10.05.2012