C# 代码片段和汇编 TBB 有什么区别?

2023-12-22

据我了解,C# 代码片段和 .NET 程序集为模块化模板开发提供相同的功能。我们在 CME 中管理代码片段,在 Visual Studio 中管理汇编代码,但在模板生成器中使用相同的方式。

在代码方面,我可以创建一个C#代码片段模板构建块(TBB),例如:

var timeStamp = DateTime.Now.ToString("d MMM yyyy");
package.PushItem("timeStamp from fragment", package.CreateHtmlItem(timeStamp));

我还可以通过实现 ITemplate 来使用相同的代码创建 .NET 程序集模板构建块,如下所示。

using System;
using Tridion.ContentManager.Templating;
using Tridion.ContentManager.Templating.Assembly;

namespace CreateAndBreakTemplates
{
  [TcmTemplateTitle("Add Date to Package")]
  public class AddDateToPackage : ITemplate
  {
    public void Transform(Engine engine, Package package)
    {
      var timeStamp = DateTime.Now.ToString("d MMM yyyy");
      package.PushItem("timeStamp from assembly", 
                       package.CreateHtmlItem(timeStamp));
    }
  }
}

The docs http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/concept_EAD6A4932E6B4BAA87646A5F8D9C6A9C解释“SDL Tridion 将代码片段插入到预定义类的预定义方法中”。看起来这个类实现了 ITemplate 并在下面添加了一些引用(我错过了什么吗?)。

The 装配设置说明 http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/task_BE927D0A8B0F4E46AFE51032895447CA至少提到这些dll。

  • Tridion.Common.dll
  • Tridion.ContentManager.dll
  • Tridion.ContentManager.Template.dll
  • Tridion.ContentManager.Publishing.dll

片段和组装之间还有其他区别吗?您将如何在两者之间进行选择?


当首次调用模板时以及修改模板后,Tridion 会将 C# 片段编译为程序集。为了编译该片段,Tridion 将其包裹在一些“地牢装饰”中(对于那些知道该术语从何而来的人来说是加分):

  1. 使用Tridion.ContentManager, Tridion.ContentManager.CommunicationManagement, Tridion.ContentManager.ContentManagement and Tridion.ContentManager.Templating命名空间
  2. 使得Package and Engine可用于称为package and engine分别
  3. 为 C# 片段创建一个记录器,可通过名为log
  4. 添加对一些常用程序集的引用(但不添加using对于他们的命名空间)

Edit:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 代码片段和汇编 TBB 有什么区别? 的相关文章

随机推荐

  • 一旦按下按钮,Java 键事件就不会执行

    您好 希望有人能告诉我我的关键事件做错了什么 我正在使用卡片布局来浏览我的两个 JPanels atm 为此 我使用操作事件和关键事件 当按下按钮时 动作事件将在 JPanel 之间切换 而当按下按键时 按键事件将隐藏按钮 按键事件一切顺利
  • asp.net MSDeployEnableWebConfigEncryptRule 无法加密 web.config

    我已经添加了
  • Rails:注册后设计登录

    我正在使用 Devise 来实现用户注册 登录 我希望用户注册成功后能够自动登录 我怎样才能做到这一点 可能情况是默认情况下设计这个 但也许我在某个地方禁用了该设置 我不记得了 你必须 1 将用户注册到设备网站 2 登录用户 对于选项 1
  • 无需矢量扫描即可查找给定区间内的值

    带有R包data table是否可以在不对数据进行全矢量扫描的情况下找到给定区间内的值 例如 gt DT lt data table x c 1 1 2 3 5 8 13 21 34 55 89 gt my data table funct
  • 如果我的测试中有验证,期望是否多余?

    我对期望和验证的目的和区别感到困惑 例如 Tested FooServiceImpl fooService Injectable FooDao fooDao Test public void callsFooDaoDelete throws
  • 如何从 MSI 检查产品的已安装版本

    在查看了这个网站上的很多帖子后 我最终决定把我的帖子放上来 我正在使用 Wix 准备 MSI 文件 在安装系统之前 我需要检查是否安装了特定版本的企业产品 我有该产品的 GUID 所有版本都相同 但我需要检查是否安装了 1 10 0 版本
  • Angular ng 选择所需选项

    我无法找到如何使用 ng select 中所需的选项 我已经尝试过这个
  • 贝塞尔曲线在 HTML5 画布中绘制拉伸椭圆

    这种绘制椭圆的方法看起来干净而优雅 http www williammalone com briefs how to draw ellipse html5 canvas http www williammalone com briefs h
  • Rainlendar 如何使用 wxWidgets 实现透明度

    雷恩伦达尔 http www rainlendar net cms index php是一个很棒的跨平台日历程序 是用 wxWidgets 编写的 它是如何实现透明效果的呢 有谁有演示透明效果的示例代码吗 我的猜测是他们可能会使用wxScr
  • dllimport 无法找到 dll,即使它位于 PATH 中

    我使用 Dllimport DllName dll 我确信进程 PATH 环境变量中存在我的 dll 的路径 并且仍然 我收到 找不到 DllName dll 找不到 DllName dll 也可能意味着 DllImport 尚未找到 Dl
  • 删除滚动条但不删除滚动功能[重复]

    这个问题在这里已经有答案了 我知道你可以定义溢出 隐藏 在 HTML 正文上删除滚动条 但我希望仍然能够使用鼠标上的箭头或滚轮滚动 预先感谢您的任何帮助 编辑 感谢您有关悬停滚动条和自定义栏的所有建议 还要感谢您对删除滚动条影响用户体验的所
  • 捆绑包和文件访问

    我已向我的项目添加了一系列文件夹 使用 添加现有文件 选项 这会导致文件夹内容在 Xcode 中显示为蓝色文件夹 以下作品 NSString imageName NSString stringWithFormat File 03 image
  • PowerShell 范围标识符

    我是 PowerShell 新手 试图更好地理解范围 有没有办法从范围内识别范围 某些变量或函数可以给我某种范围名称或范围 Guid 或范围 Id 例如 我如何知道本地范围是否是全局范围 例如 我如何知道本地范围是否是全局范围 bool i
  • 如何验证传递给“PrincipalContext”的凭据

    这是后续我之前的问题 https stackoverflow com questions 50055073 testing a principalcontext using validatecredentialsnull null beha
  • ant 的 componentdef 错误

    我有一个相对较旧的 Grails 应用程序 它使用 ant 来构建应用程序 在测试服务器中 它构建没有任何问题 但是当我尝试在我的电脑上运行它时 我收到一致的错误 Caused by jar file C ant apache ant 1
  • Scala:理解参数多态性

    有什么区别 def drop1 A l List A l tail and def drop1 l List Int l tail 假设用法看起来像 drop1 List 1 2 3 何时应该使用其中之一 为什么 虽然我可以理解第二个例子
  • Swift“文本”不可用:自 iOS7 起已弃用 API。文本标签不起作用

    我一直有这个错误 我已经看到使用 textLabel text 回答了其他问题 但它在我的情况下不起作用 我是 swift 的新手 所以有人可以解释一下为什么以及如何解决这个问题 你需要打开包装textLabel通过使用 after tex
  • 将可变 Arc 引用传递给 hyper service_fn 处理程序时出现问题

    我一直在尝试以下 显示相关导入和代码 use std sync Arc Mutex use std thread use hyper rt self Future Stream use hyper service service fn us
  • 设置图例符号不透明度

    我正在绘制带有半透明 x 标记 20 alpha 的绘图 如何使图例中的标记以 100 不透明度显示 import matplotlib pyplot as plt plt plot date x xaxis y yaxis marker
  • C# 代码片段和汇编 TBB 有什么区别?

    据我了解 C 代码片段和 NET 程序集为模块化模板开发提供相同的功能 我们在 CME 中管理代码片段 在 Visual Studio 中管理汇编代码 但在模板生成器中使用相同的方式 在代码方面 我可以创建一个C 代码片段模板构建块 TBB