我试图在嵌入在XSLT1.0 doc中的C#脚本块中使用Dictionary。 当我尝试添加对System.Collections.Generic或System.Core的引用时,我找不到用于汇编的元数据文件...' 将ref添加到' mscorlib'时,似乎引用了旧版本(?),因为我在尝试使用Dictionary.Keys.Contains()时遇到错误(&#39) ;不包含Contains方法)。 不用说,这段代码在xslt之外成功测试。 如何为FW 3.5 / 4添加适当的参考? TNX!
答案 0 :(得分:1)
Dictionary.Keys.Contains
在System.Linq
命名空间中定义,Linq在System.Core程序集中定义,因此您需要正确的msxsl:assembly
和msxsl: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>