我有一个简单的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可以正常工作;保存文件后,程序包还原按预期进行。

然后,我向项目添加了一个接口(interface),该接口(interface)引用了System.Data.IDbConnection,如下所示:
using System.Data;

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

在制造时炸弹:



我的KVM list :

C:\Users\Administrator\Proj\MyProj [next +3〜2 -0!]> kvm列表

事件版本运行时体系结构位置别名
------ ------- ------- ------------ -------- -----
* 1.0.0-alpha3 svr50 x64 C:\Users\Administrator\.kre\packages默认
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 [下一个+3〜​​2 -0!]>

Can ASP.NET vNext use non-vNext references?问题似乎非常相似,但是此处的错误消息有所不同,并且nuget intellisense建议ADO.NET程序包是为K10构建的。

最佳答案

IDbConnection是在.NET桌面版本的System.Data.dll中定义的。它不包含在System.Data.Common中,System.Data.Common仅包含ADO.NET类型的一个子集,该子集可在不同版本的运行时中使用。如果您的应用程序只能在桌面.NET上正常运行,则应该可以引用完整的System.Data.dll并使用其中的任何类型。如果您希望能够定位基于CoreCLR的运行时,则应遵循System.Data.Common中定义的类型,例如在这种情况下,您可以使用DbConnection。

09-27 12:48