看看 Mihai Cadaru 的这两篇博客文章:
有了这两个,你应该能够找到你需要的东西。
您在 TBB 中需要的基本功能是:
public PublishTransaction GetPublishTransaction(Engine engine)
{
String binaryPath = engine.PublishingContext.PublishInstruction.
RenderInstruction.BinaryStoragePath;
Regex tcmRegex = new Regex(@"tcm_\d+-\d+-66560");
Match match = tcmRegex.Match(binaryPath);
if (match.Success)
{
String transactionId = match.Value.Replace('_', ':');
TcmUri transactionUri = new TcmUri(transactionId);
return new PublishTransaction(transactionUri, engine.GetSession());
}
return null;
}
还可能值得注意的是,与engine.PublishingContext.PublishInstruction.RenderInstruction.BinaryStoragePath
在 Publisher 中运行代码时相比,在 PreviewMode 或从模板生成器呈现编码器时,该属性将返回不同的东西。要查看 BinaryStoragePath 中的 PublishTransaction URI,您必须将 Visual Studio TBB 调试项目附加到TcmPublisher.exe
进程,以便实际存在 PublishTransaction 对象,否则 BinaryStoragePath 将仅包含通用路径,如 ../preview。