ASP.NET vNext对ADO.NET的引用破坏了

时间:2014-09-11 04:18:34

标签: asp.net-mvc asp.net-core

我有一个简单的ASP.NET vNext类库项目,当引用System.Data中的类型时,它无法编译;我在这里做错了什么,或者vnext中有问题吗?

我设置了我的project.json:

{
    "dependencies": {
        "System.Data.Common": "1.0.0-alpha3"
    },

    "frameworks": {
        "net451": {
            "dependencies": {
            }
        },
        "k10": {
            "dependencies": {
            }
        }
    }
}

键入" System.Data.Common"参考,nuget intellisense工作正常;保存文件后,包恢复按预期发生。

然后我在项目中添加了一个引用System.Data.IDbConnection的接口,如下所示:

using System.Data;

namespace MyProj.Common.Data
{
    public interface IDbConnectionFactory
    {
        IDbConnection CreateConnection();
    }
}

这在构建时爆炸:

  

错误1类型或命名空间名称' IDbConnection'无法找到   (你错过了使用指令或程序集吗?   参考?)C:\ Users \ Administrator \ Proj \ MyProj \ MyProj.Common \ Data \ IDbConnectionFactory.cs 7 9 MyProj.Common

我的KVM列表:

C:\Users\Administrator\Proj\MyProj [next +3 ~2 -0 !]> kvm list

Active Version            Runtime Architecture Location                             Alias
------ -------            ------- ------------ --------                             -----
  *    1.0.0-alpha3       svr50   x64          C:\Users\Administrator\.kre\packages default
       1.0.0-alpha3       svr50   x86          C:\Users\Administrator\.kre\packages
       1.0.0-alpha3       svrc50  x64          C:\Users\Administrator\.kre\packages
       1.0.0-alpha3       svrc50  x86          C:\Users\Administrator\.kre\packages
       1.0.0-alpha4-10364 CLR     amd64        C:\Users\Administrator\.kre\packages
       1.0.0-alpha4-10364 CLR     x86          C:\Users\Administrator\.kre\packages
       1.0.0-alpha4-10364 CoreCLR amd64        C:\Users\Administrator\.kre\packages
       1.0.0-alpha4-10364 CoreCLR x86          C:\Users\Administrator\.kre\packages
       1.0.0-alpha4-10365 CLR     amd64        C:\Users\Administrator\.kre\packages
       1.0.0-alpha4-10365 CLR     x86          C:\Users\Administrator\.kre\packages


C:\Users\Administrator\Proj\MyProj [next +3 ~2 -0 !]>

Can ASP.NET vNext use non-vNext references?问题似乎非常相似,但这里的错误信息有些不同,nuget intellisense表明ADO.NET包是为K10构建的。

1 个答案:

答案 0 :(得分:7)

IDbConnection在桌面版.NET中的System.Data.dll中定义。它不包含在System.Data.Common中,它只包含将在不同版本的运行时提供的ADO.NET类型的子集。如果您的应用程序只能对桌面.NET工作,那么您应该能够引用完整的System.Data.dll并使用它中的任何类型。如果您希望能够定位基于CoreCLR的运行时,您应该坚持使用System.Data.Common中定义的类型,例如在这种情况下,您可以使用DbConnection。