我最近需要将我的项目从.net 3.5升级到.net 4并连接到新的SQL Server 2008 R2。升级和编译后,它会抛出这两个错误:
无法嵌入Interop类型“Microsoft.SqlServer.Dts.Runtime.Wrapper.ApplicationClass”。请改用适用的界面。
“Microsoft.SqlServer.Dts.Runtime.Wrapper.ApplicationClass”类型没有定义构造函数
代码抛出此错误在ApplicationClass上: IDTSApplication90 app = new ApplicationClass();
我在bin文件夹中有这个dll:Microsoft.SqlServer.DTSRuntimeWrap.dll 这个dll的版本是9.0.242.0
我认为.NET 4不喜欢它。所以我要求我们的DBA在服务器中搜索此文件以查找版本10.她告诉我这个文件在sql server中不存在。
如何解决此问题?
答案 0 :(得分:1)
对于2008 R2这个dll的正确版本是10.50.1600.1,我在C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ SDK \ Assemblies中得到它。尝试在那里搜索。
答案 1 :(得分:1)
根据MSDN:
Microsoft.SqlServer.Dts.Runtime.Wrapper命名空间提供 用于在中创建控制流组件的类和接口 运行。该组件是主要的互操作组件(PIA) 命名空间Microsoft.SqlServer.Dts.Runtime,它是程序集 Microsoft.SqlServer.ManagedDTS(in microsoft.sqlserver.manageddts.dll)。 此命名空间中的类 不应该实例化。相反,使用在中找到的类 Microsoft.SqlServer.Dts.Runtime 强>
我认为您应该重写代码以使用Microsoft.SqlServer.Dts.Runtime命名空间中的类。来自此命名空间的Application可以实例化 - 我已经使用过它。 加载并执行包的示例,您可以找到here。