0

我们正在将 VBScript 模板转换为 .net 复合模板,并且在使用 Broker Query Mechanism 时遇到了一些问题。

我们的旧代码如下所示:

sQuery = "query" & nNumber &  ".AddCriteria(""schema"",""="", ""1132"");"& vbcrlf
if objFields.Item("FilterBD").Value.Count >0 Then
     if objFields.Item("FilterBD").Value(1) = "Yes" Then
      sQuery = sQuery & "query" & nNumber & ".AddOperator(Query.QueryOperator.AND_Field);"& vbcrlf
         sQuery = sQuery & "query" & nNumber & ".AddCriteria(""categorization"", ""="", ""Broker_Dealer/test"");" & vbcrlf
     End If
End If

在将其转换为 .net 时,我们将 Tridion.ContentDelivery.DynamicContent dll 的引用添加到我们的项目中,以便我们可以将代码(示例)编写为:

using Tridion.ContentDelivery.DynamicContent.Query;
Tridion.ContentDelivery.DynamicContent.Query.Query query = new Tridion.ContentDelivery.DynamicContent.Query.Query();
ItemSchemaCriteria isArticle = new ItemSchemaCriteria(1132);
CategoryCriteria bdCategory = new CategoryCriteria("Broker_Dealer/\" + \"test\"");
Criteria bdCriteria = CriteriaFactory.And(isArticle, bdCategory);
query.Criteria = bdCriteria;

到目前为止,这种方法在 Visual Studio 中运行良好,但是在模板生成器中构建 CT 时,我们收到错误“无法加载文件或程序集‘无法加载文件或程序集’Tridion.ContentDelivery.Interop,版本 = 6.1。 0.43,Culture=neutral,PublicKeyToken=ddfc895746e5ee6b'或其依赖项之一。系统找不到指定的文件。'

按照这些在 GAC 中注册 dll 的步骤后,我们仍然收到同样的问题吗?

我们错过了什么?请帮忙。谢谢。

4

2 回答 2

4

如果您需要查询经纪人,那么 .Net TBB 不是这样做的地方。在您的 VBSscript 模板中,您似乎一直在将服务器端代码写入输出,这是正确的方法。在您的模块化模板中,您应该采用相同的方法 - 写出适当的 .Net 代码,或者可能是更好的方法,写出 .Net 控制标记,当 IIS 处理该标记时,将直接调用 CD API。

于 2012-09-18T08:46:37.747 回答
1

如果您确定 bin 文件夹中存在 Interop dll,那么我唯一能想到的是它是错误的版本。你能确定 DLL 的版本是 6.1.0.43 吗?

于 2012-09-18T08:51:55.787 回答