2017-07-18 56 views
1

我正在编写一个需要执行Exasol脚本的Visual Studio 2017和C#中的AWS Lambda函数。我认为我的问题是确定要引用哪些Assemblies和NuGet包。从AWS/Lambda/.NETCore/C#/ ADO.Net/Visual Studio 2017连接到EXASOL

我已经安装:EXASolution_ADO.NET-5.0.17.msi和我引用Microsoft.NETCore.app 1.0,System.Data.Common和EXADataProvider.dll。

在此代码:

var exasolCnx = new Exasol.EXADataProvider.EXAConnection(); 
var exasolCmd = exasolCnx.CreateCommand(); 

第一线工作,并给了我一个EXAConnection对象。

第二行给出了两个编译错误:

  • 类型“的DbConnection”在一个组件,该组件不 引用定义。您必须添加对程序集“System.Data, Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的引用。
  • “EXAConnection”不包含 “CreateCommand”的定义和没有扩展方法“CreateCommand”接受类型“EXAConnection”的 第一个参数可以发现(你 缺少using指令或程序集引用?)

我真的需要挖掘对System.Data版本2.0.0.0的引用吗? NuGet上最古老的可用版本是4.0。

回答

0
  1. Exasol.EXADataProvider.EXAConnection(),返回DbConnection这是一个ADO.Net连接抽象类,现在是什么Exasol将内部参照是V2.0二进制,这就是为什么它提供了一个编译错误的特定组件和将需要相同的。这不会有最新的4.0工作,因为清单要加载V2.0大会,虽然你可能会考虑绑定重定向在配置文件中,老版本重定向到新的一个,检查:

    http://blog.rytmis.net/2016/03/29/asp-net-core-and-assembly-binding-redirects/

通过这种方式,您将能够在运行时使用4.0二进制代替2.0,尽管编译仍应与旧版本一起使用,因为这是编译要求。

  • 我理解的是第一个问题是导致第二个,因为DbConnection/IDbConnection仍未解决,并且这些扩展方法是基本接口IDbConnection其中DbConnection器具上。
  • 此外,由于您使用的是.Net内核,请确保所有库都符合内核要求,因为完整的.Net二进制文件不起作用。

    +0

    谢谢Mrinal,绑定重定向可能是关键。 我已经简化了重现问题的步骤并将其发布到此处(https://stackoverflow.com/questions/45175712/the-exasol-ado-net-driver-doesnt-work-with-net-核心) –

    +0

    添加了对旧的System.Data.dll(2.0.0.0)的引用 修复了错误:''DbConnection'在未引用的程序集中定义。“并给了我下一个错误:''Component'在未引用的程序集中定义。您必须添加对程序集“系统,版本= 2.0.0.0”的引用 添加对旧System.dll的引用修复错误,但显示需要mscorlib 2.0.0.0。 (这不起作用) –

    +0

    接着我试图结合重定向路线: '<配置> ' 我试过了各种排列,没有效果 –

    相关问题