我有一个简单的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构建的。
答案 0 :(得分:7)
IDbConnection在桌面版.NET中的System.Data.dll中定义。它不包含在System.Data.Common中,它只包含将在不同版本的运行时提供的ADO.NET类型的子集。如果您的应用程序只能对桌面.NET工作,那么您应该能够引用完整的System.Data.dll并使用它中的任何类型。如果您希望能够定位基于CoreCLR的运行时,您应该坚持使用System.Data.Common中定义的类型,例如在这种情况下,您可以使用DbConnection。