Tridion:加载程序集时出错';Tridion.ContentDelivery.Interop';

Tridion:加载程序集时出错';Tridion.ContentDelivery.Interop';,tridion,tridion-2011,tridion-content-delivery,Tridion,Tridion 2011,Tridion Content Delivery,我们正在将VBScript模板转换为.net复合模板,并且在使用代理查询机制时面临一些问题 我们的旧代码如下所示: sQuery = "query" & nNumber & ".AddCriteria(""schema"",""="", ""1132"");"& vbcrlf if objFields.Item("FilterBD").Value.Count >0 Then if objFields.Item("FilterBD").Value(1) =

我们正在将VBScript模板转换为.net复合模板,并且在使用代理查询机制时面临一些问题

我们的旧代码如下所示:

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的引用,以便我们可以将代码(示例)编写为:

到目前为止,这种方法在VisualStudio中运行良好,但是在模板生成器中构建CT时,我们遇到了错误“无法加载文件或程序集”“无法加载文件或程序集”“Tridion.ContentDelivery.Interop,版本=6.1.0.43,区域性=中性,PublicKeyToken=ddfc895746e5ee6b”“或其依赖项之一。”。系统找不到指定的文件。'

跟踪之后,我们仍然收到相同的问题

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

谢谢。

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

如果您需要查询代理,则.Net TBB不是执行此操作的地方。在VBSSCcript模板中,您似乎一直在向输出中写入服务器端代码,这是正确的方法。在模块化模板中,您应该采用相同的方法-要么写出适当的.Net代码,要么写出一个.Net控制标记(可能是更好的方法),当IIS处理该标记时,它将直接调用CD API。

如果您确定bin文件夹中存在互操作dll,我唯一能想到的是,这是错误的版本。能否确保DLL的版本为6.1.0.43?

如果您确定bin文件夹中存在互操作DLL,我唯一能想到的是它的版本错误。能否确保DLL的版本为6.1.0.43?

是否将Tridion.ContentDelivery.Interop.DLL放在web应用程序的bin文件夹中?是否在CT的.Net TBB中使用此命名空间?如果是这样,那么你在错误的地方使用它。Tridion.ContentDelivery.DynamicContent是一个内容交付命名空间(线索在名称中),不应直接在模板中使用。您好Quirijn:是的,该文件已存在于Bin文件夹中@杰里米:还有别的选择吗?我需要使用query类(可以在我的帖子中看到)。如何在我的模板中使用查询类?@HustonLopes在模板代码中使用查询类没有意义。我希望您理解查询类是为了在发布期间从内容交付系统和CMS系统上的模板代码工作中获取数据。不管怎么说,你想要实现什么?@vikaskumar:是的,我在我的模板中以字符串形式在StringBuilder中传递代码。但出于测试目的,我已将查询代码添加到模板中,以便轻松构建字符串。您是否将Tridion.ContentDelivery.Interop.dll放在web应用程序的bin文件夹中?是否在CT的.Net TBB中使用此命名空间?如果是这样,那么你在错误的地方使用它。Tridion.ContentDelivery.DynamicContent是一个内容交付命名空间(线索在名称中),不应直接在模板中使用。您好Quirijn:是的,该文件已存在于Bin文件夹中@杰里米:还有别的选择吗?我需要使用query类(可以在我的帖子中看到)。如何在我的模板中使用查询类?@HustonLopes在模板代码中使用查询类没有意义。我希望您理解查询类是为了在发布期间从内容交付系统和CMS系统上的模板代码工作中获取数据。不管怎么说,你想要实现什么?@vikaskumar:是的,我在我的模板中以字符串形式在StringBuilder中传递代码。但出于测试目的,我已经将查询代码添加到模板中,以便轻松构建字符串。然而,由于查询机制被代理查询机制所取代,我试图为“query.Match,query.AddSelectString”找到一些替代方法,它是搜索过滤器等的替代方法。您的问题没有反映这一点。在这种情况下,我通常在web服务器(CD实例)上创建一个页面,并直接在其中写入CD代码。一旦我有它的工作,我然后逆向工程它回到我的模板适当。如果你对API有问题,那么再问另一个更具体的问题。谢谢Jeremy,其中一个问题已经在这里了:嗨Jeremy,我采用的方法与我们以前的CT相同。然而,由于查询机制被代理查询机制所取代,我试图为“query.Match,query.AddSelectString”找到一些替代方法,它是搜索过滤器等的替代方法。您的问题没有反映这一点。在这种情况下,我通常在web服务器(CD实例)上创建一个页面,并直接在其中写入CD代码。一旦我有它的工作,我然后逆向工程它回到我的模板适当。如果API有问题,请询问另一个更具体的问题。谢谢Jeremy,其中一个问题已经在这里:是验证:)我现在不测试此方法:(.相反,我将按照Jeremy的建议集中精力构建.net字符串。是验证:)我现在不测试此方法:(。相反,我们将按照Jeremy的建议,集中精力构建.net字符串。
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;