Com Interop w / MSXML

时间:2009-03-31 13:44:29

标签: c# com interop msxml navision

我正在尝试通过.Net程序集进行COM互操作 - 特别是使用MSXML接口。这会导致以下错误消息:

程序集“C:\ Users \ bra \ Documents \ Visual Studio 2008 \ Projects \ SOAPROXY \ SOAPROXY \ bin \ Release \ SOAPROXY.dll”无法转换为类型库。类型库导出器在处理'SOAPROXY.ISoap.PostEnvelope(#0),SOAPROXY'时遇到错误。错误:类型库导出器无法加载类型'MSXML2.IXMLDOMDocument'(错误:System.IO.FileNotFoundException:无法加载文件或程序集'Interop.MSXML2,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = fbdb4bb4a7dccef2'或其中一个系统无法找到指定的文件。文件名:'Interop.MSXML2,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = fbdb4bb4a7dccef2')。 SOAPROXY

基本界面定义为

[Guid("some guid")]
[ComVisible(true)]
public interface ISoap
{
    IStatus State { get; }

    IXMLDOMDocument PostEnvelope(IXMLDOMDocument envelope, string action, string endpoint, string print, string store, string location);
}

[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
public class Soap : ISoap
{
     ...
}

任何线索?

2 个答案:

答案 0 :(得分:1)

您是否在MSXML6上为GAC设置了Interop包装器?似乎Fusion无法加载程序集,并解决了你只需要GAC它。或者将其放在Fusion加载路径上。

但我不明白为什么需要MSXML来向SOAP Web服务发出请求。为什么不直接使用内置于.NET BCL的WebClient广告XmlDocument

我假设您从上面所写的内容中想要构建一个Navision“扩展”(可能不是正确的词)来连接外部Web服务,它可以说是XML,也可能更具体地说是SOAP。并且假设您可以在.NET中构建Navision扩展,但是您不能使用wsdl.exe或svcutil.exe,这是用于内置于.NET的2个Web服务堆栈的工具。如果是这样,为什么不使用.NET中可用的低级HTTP和XML类?

你根本不需要COM互操作。

答案 1 :(得分:0)

在我看来,好像你想通过SOAP Web服务与Navision交谈。如果你想这样做,你应该使用.NET的Web服务设施,即WCF(Windows Communication Foundation)。