[英]Use .NET dll as COM
我有一个令人费解的问题,需要从SQL Server 2005存储过程调用WCF Web服务。
在进行研究时,我发现.NET SQL Server 2005的唯一版本将本身支持2.0。但是,我需要使用客户端来使用为.NET 4编写的Web服务。在尝试了一些变通方法以尝试获取SQL Server之后为了识别.NET 4 DLL,我决定只创建一个.NET 2 CLR存储过程,并使用以.NET 4形式编写的包装类(公开为COM)来调用我的Web服务。
我发现了几本关于如何将.NET 4 dll与.NET 2用作COM dll的指南( link , link ),但仍然很麻烦。
我的“包装器类”(.NET 4)如下所示:
namespace Wrapper
{
[Guid("4C1D992C-4965-49B2-A694-33810A3B9775")]
[ComVisible(true)]
public class WrapperClass
{
public bool Process(Guid ID)
{
}
}
}
我已经按照上面第二个链接的建议添加了app.manifest文件。 但是,当我将生成的DLL添加到我的.NET 2 sql服务器项目中时,它无法生成并显示以下消息:
1>c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): Warning: MSB3274: The primary reference "Wrapper" could not be resolved because it was built against the ".NETFramework,Version=v4.0" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v2.0".
我在这里做错了什么? 我试着根本不添加DLL作为参考,但是代码甚至无法编译。
或者,还有其他(更简便)的方法可以解决此问题吗?
编辑:我也不能直接添加网络参考:
我最终只是使用John Koerner的建议,并使用不使用System.ServiceModel
WSDL生成了一个客户端。 结果,我制作了我的CLR程序集.net 2.0,它运行正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.