我们正在将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,Version = 6.1.0.43,Culture = neutral,PublicKeyToken = ddfc895746e5ee6b'或其中一个依赖项。系统找不到指定的文件。'
关注these Steps of registering the dlls in GAC后,我们仍然遇到同样的问题?
我们错过了什么?请帮助。 感谢。
答案 0 :(得分:4)
如果您需要查询Broker,那么.Net TBB就不是这样做的地方。在您的VBSscript模板中,您似乎一直在为输出编写服务器端代码,这是正确的方法。在您的模块化模板中,您应该采用相同的方法 - 或者写出适当的.Net代码,或者可能是更好的方法,写出.Net控制标记,当由IIS处理时,将直接调用CD API。
答案 1 :(得分:1)
如果您确定bin文件夹中存在Interop dll,我唯一能想到的是它是错误的版本。你能确定DLL的版本是6.1.0.43吗?