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

为什么SDL Tridion 2011自定义解析器在发布组件时调用两次?,tridion,tridion-2011,Tridion,Tridion 2011,我有一个自定义解析器,它应用于Publication、StructureGroup、Page和Component类型的项。代码按预期运行,但我不清楚调用代码的确切时间。 我的Tridion.ContentManager.config文件包含以下摘录: <resolving> <mappings> <clear/> <add itemType="Tridion.ContentManager.Communication

我有一个自定义解析器,它应用于Publication、StructureGroup、Page和Component类型的项。代码按预期运行,但我不清楚调用代码的确切时间。 我的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>

当我发布发布、StructureGroup或页面时,会调用一次自定义解析程序(这是我所期望的),但是当我发布组件(其架构链接到一个生成动态组件表示的组件模板)时,会调用两次自定义解析程序


这是预期的行为吗?如果没有,有人能建议为什么第二次调用我的解析器吗?

为组件调用一次解析器,为与组件架构关联的每个组件模板调用一次解析器。为该模式添加一个额外的CT将调用数量增加到三个


目前还不清楚这是一个bug还是出于设计,但解释了调用的数量。有趣的是,在取消发布组件时,只调用一次自定义解析程序。我注意到,对于当前发布操作的“范围”内的每个发布目标,都会调用自定义解析程序

有趣的一点是,组件并不恰好在页面上,是吗?不,不在页面上。我尝试从所有项目类型中删除解析器,但组件思维方式除外,但仍然如此。我想知道它是否为组件调用一次,为与组件模式关联的每个CT调用一次。我现在要做一个新的CT,看看它是否会被调用3次。是的,这也是我想到的,让我知道你的测试结果。当你回答你自己的问题时,这很好:)我会说它为组件本身调用一次(因此可能会解析为包含该组件的页面),为CTs调用一次。但是我以前没有检查过这些信息,如果是故意的,我也没有检查过。。。