为什么SDL Tridion 2011自定义解析器在发布组件时调用了两次?

Chr*_*ers 3 tridion tridion-2011

我有一个自定义解析器,它适用于Publication,StructureGroup,PageComponent类型的项目.代码按预期运行,但我不清楚代码何时被调用.我的Tridion.ContentManager.config文件包含以下提取:

<resolving>
    <mappings>
        <clear/>
        <add itemType="Tridion.ContentManager.CommunicationManagement.Page">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.PageResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
                <add type="UrbanCherry.Net.SDLTridion.CustomResolvers.DynamicBinaryLinkResolver" assembly="UrbanCherry.Net.SDLTridion.CustomResolvers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7729a00ff9574fb"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.CommunicationManagement.PageTemplate">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.PageTemplateResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.ContentManagement.Component">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.ComponentResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
                <add type="UrbanCherry.Net.SDLTridion.CustomResolvers.DynamicBinaryLinkResolver" assembly="UrbanCherry.Net.SDLTridion.CustomResolvers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7729a00ff9574fb"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.CommunicationManagement.ComponentTemplate">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.ComponentTemplateResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.CommunicationManagement.Publication">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.PublicationResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
                <add type="UrbanCherry.Net.SDLTridion.CustomResolvers.DynamicBinaryLinkResolver" assembly="UrbanCherry.Net.SDLTridion.CustomResolvers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7729a00ff9574fb"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.CommunicationManagement.StructureGroup">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.StructureGroupResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
                <add type="UrbanCherry.Net.SDLTridion.CustomResolvers.DynamicBinaryLinkResolver" assembly="UrbanCherry.Net.SDLTridion.CustomResolvers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e7729a00ff9574fb"/>
            </resolvers>
        </add>
        <add itemType="Tridion.ContentManager.ContentManagement.Category">
            <resolvers>
                <add type="Tridion.ContentManager.Publishing.Resolving.CategoryResolver" assembly="Tridion.ContentManager.Publishing, Version=6.1.0.996, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
            </resolvers>
        </add> 
    </mappings>
</resolving>
Run Code Online (Sandbox Code Playgroud)

当我发布一个Publication,StructureGroupPage我的自定义解析器被调用一次(这是我所期望的),但是当我发布一个组件 (其模式链接到一个组件模板,它产生一个动态组件演示)时,自定义解析器被调用两次.

这是预期的行为吗?如果没有,有人可以建议为什么我的Resolver第二次被召唤?

Chr*_*ers 5

Resolver为Component调用一次,为Component的Schema调用每个Component Template调用一次.为该Schema添加额外的CT会将调用次数增加到3次.

目前尚不清楚这是一个错误还是设计,但解释了呼叫的数量.有趣的是自定义解析器仅在取消发布组件时调用一次