参考下,在WCF服务++库(Reference c++ library in wcf service

2019-10-21 06:42发布

我一直在寻找这样一个很长一段时间,但还没有看到一个答案。

我引用两个DLL,这是.NET中的一个C ++库API,在WCF服务库,它调用从wcftestclient包装的方法时工作正常。 但是,当自我托管在websercice库,它说“无法找到组装xxx.dll(它是C ++ API DLL之一)或者其依赖的一个”。 但我可以看到它说,丢失的dll是自动复制到主机webserive项目的bin / debug文件夹。 另外,我可以主办一个简单的控制台项目中调用包装方法有没有问题,所有的图书馆。

我希望这是一个简单的配置设置,我很想念在网络配置文件来指定,任何人有什么建议吗? 谢谢。

Answer 1:

我花了差不多三天这个问题,现在它的解决。 在这种情况下,可以帮助别人谁可能有同样的情况在这里是为什么。 这两个C ++库.NET API DLL是后期绑定,这样就不会看它的依赖,直到运行时。 我甚至想注册表中的整个外部库包在GAC并没有帮助; 这是因为有两个.NET API dll的一个是弱组装,因此CLR将甚至懒得在GAC寻找它。 我所做的就是创建一个静态构造函数的服务和静态构造函数中后期绑定组件加载到AppDomain中。 我使用Assembly.LoadFrom(string filePath)方法(其它方法可在大会类来做到这一点)。 现在我可以主办IIS服务,它消耗任何客户端。 所以,如果CLR抱怨无法找到程序集,但你可以看到它在bin / debug文件夹,它可能是一个需要预先加载到AppDomain中晚期绑定组件; 有关应用程序域的好处是,你只需要一次加载该程序集,它绝不会卸载单个程序集。



文章来源: Reference c++ library in wcf service