背景:Windows Azure;Visual Studio 社区 2015;清除脚本;脚本
我在将 XmlDocument 对象暴露给使用 ClearScript 执行的 JScript 时遇到问题。
我正在使用实例化一个 JScript 解释器
JScriptEngine JSengine = new JScriptEngine(WindowsScriptEngineFlags.EnableDebugging | WindowsScriptEngineFlags.EnableJITDebugging);
要实例化 XmlDocument 对象,我已经尝试过
using System.Xml;
...
JSengine.AddHostType("CSXmlDocument", typeof(XmlDocument));
...
和
...
JSengine.AddCOMObject("CSXmlDocument", "MSXML2.DOMDocument");
...
我使用这个执行 JScript 脚本
...
object answer = JSengine.Evaluate(File.ReadAllText(rulesetFilename));
...
我的困难在于如何使用CSXmlDocument
脚本中的对象。我尝试了以下所有方法均无济于事。
var xmlObj1 = CSXmlDocument;
var xmlObj2 = new CSXmlDocument;
var xmlObj3 = CSXmlDocument();
var xmlObj4 = new CSXmlDocument();
当CSXmlDocument
使用 定义时AddCOMObject
,第二次到第四次调用会给出错误
Unable to evaluate the expression. Operation not supported. Unknown error: 0x8013baff.
第一次调用只允许我访问三个方法,Equals
, GetHashCode
, GetType
。
当CSXmlDocument
使用 定义时AddHostType
,第一个仅提供上述三种方法。第二次调用似乎可以访问全套属性和方法(至少这是 VS2015 在调试会话中所说的)但是,当我尝试使用LoadXml
我得到的方法时
xmlObj2.LoadXml(body)
Unable to evaluate the expression. Operation not supported. Unknown error: 0x8013baff.
我目前正在解决两个可能的问题:
- 根据另一个 StackOverflow 发布的字符编码。
- HTML-XML 标记冲突。