在XSLT C#脚本块中添加对程序集的引用

时间:2015-03-10 18:45:44

标签: c# xslt reference .net-assembly

我试图在嵌入在XSLT1.0 doc中的C#脚本块中使用Dictionary。 当我尝试添加对System.Collections.Generic或System.Core的引用时,我找不到用于汇编的元数据文件...' 将ref添加到' mscorlib'时,似乎引用了旧版本(?),因为我在尝试使用Dictionary.Keys.Contains()时遇到错误(&#39) ;不包含Contains方法)。 不用说,这段代码在xslt之外成功测试。 如何为FW 3.5 / 4添加适当的参考? TNX!

1 个答案:

答案 0 :(得分:1)

Dictionary.Keys.ContainsSystem.Linq命名空间中定义,Linq在System.Core程序集中定义,因此您需要正确的msxsl:assemblymsxsl:using元素那些。以下适用于VS2013 XSLT调试器:

<msxsl:script implements-prefix="my" language="csharp">
  <msxsl:assembly name="System.Core" />
  <msxsl:using namespace="System.Linq" />
  <msxsl:using namespace="System.Collections.Generic" />

  <![CDATA[
    public bool myFunc() 
    {
      var d = new Dictionary<string, string>();
      d.Add("Hello", "Goodbye");
      return d.Keys.Contains("Hello");
    }    
  ]]>
</msxsl:script>

这仍然存在使用Dictionary.Keys.Contains的原因,当你可以使用Dictionary.ContainsKey时,它自2.0以来一直在.NET中,并且不需要任何额外的程序集或命名空间引用。< / p>