C# 将.NETDLL用作COM

C# 将.NETDLL用作COM,c#,.net,sql-server-2005,com,sqlclr,C#,.net,Sql Server 2005,Com,Sqlclr,我有一个有点复杂的问题,需要从SQLServer2005存储过程调用WCFWeb服务 在研究过程中,我发现唯一的.NETSQLServer2005版本本机支持它2.0,但我需要使用客户端来使用为.NET4编写的web服务。在尝试让SQL Server识别.NET 4 DLL的一些解决方法后,我决定简单地创建一个.NET 2 CLR存储过程,并使用以COM形式公开的.NET 4编写的包装类来调用我的web服务 我找到了一些关于如何将.NET4 dll与.NET2一起用作COM dll(,)的指南,

我有一个有点复杂的问题,需要从SQLServer2005存储过程调用WCFWeb服务

在研究过程中,我发现唯一的.NETSQLServer2005版本本机支持它2.0,但我需要使用客户端来使用为.NET4编写的web服务。在尝试让SQL Server识别.NET 4 DLL的一些解决方法后,我决定简单地创建一个.NET 2 CLR存储过程,并使用以COM形式公开的.NET 4编写的包装类来调用我的web服务

我找到了一些关于如何将.NET4 dll与.NET2一起用作COM dll(,)的指南,但我仍在努力

我的“包装器类”(.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 server项目时,它无法生成,并显示以下消息:

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作为引用,但代码甚至无法编译

或者,有没有其他(更简单的)方法可以解决这个问题

编辑:我也不能直接添加web引用:


我最终只是使用了的建议,并使用WSDL生成了一个客户机,而没有使用
System.ServiceModel
。因此,我制作了我的CLR assembly.net 2.0,它运行良好。

您的web服务是否生成WSDL文件?@JohnKoerner是的。我有一个正常使用它的工作客户端,除了它需要.NET 2没有的
System.ServiceModel.dll
。您可以尝试使用WSDL代理类工具:@JohnKoerner我已经使用svcutil.exe从.NET 4生成了一个类。我将研究如何使用WSDL…目前似乎找不到该文件。