2016-07-14 20 views
11

Tôi đã tạo một dự án .NET Core mới với lệnh dotnet new -t lib. Đó là một thư viện lớp cho Ngữ cảnh EF của tôi. Đây là tôi project.json:EF 7 Lỗi công cụ lõi .NET

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "debugType": "portable" 
    }, 
    "dependencies": {}, 
    "frameworks": { 
    "netstandard1.6": { 
     "dependencies": { 
     "NETStandard.Library": "1.6.0", 
     "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", 
     "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 
     } 
    } 
    } 
} 

Khi tôi chạy dotnet restore lệnh tôi nhận được lỗi này:

error: Package Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final is not compatible with netstandard1.6 (.NETStandard,Version=v1.6). Package Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final supports: 

Làm thế nào tôi có thể sử dụng EF Mã đầu tiên với netstandard1.6?

+0

Cẩn thận rằng việc sử dụng các dụng cụ cho Enity Framework không hỗ trợ libaries lớp Vì vậy, làm 'dotnet ef' sẽ thất bại. Xem https://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html#targeting-class-library-projects-is-not-supported để giải quyết. –

+0

@JohanB Một phần được giải quyết bằng cách sử dụng giải pháp '--startup-project', ví dụ:' dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations thêm InitDb', hãy xem xét điều này: [Parameterize directories used by dotnet-ef] (https://github.com/aspnet/EntityFramework/pull/5680) –

+0

@HamidMosalla Đây là một giải pháp mà tôi đang tìm kiếm. Bạn có thể cập nhật câu trả lời của bạn với nhận xét này để tôi có thể đánh dấu câu trả lời đó là câu trả lời đúng không? – alexxjk

Trả lời

14

Theo this, The "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" nên được đăng ký tại một phần công cụ trong project.json:

{ 
"version": "1.0.0-*", 
"description": "Class Library", 
"frameworks": { 
    "netstandard1.6": { 
    "imports": [ 
    "dnxcore50" 
    ] 
} 
}, 

"dependencies": { 
"NETStandard.Library": "1.6.0", 
"Microsoft.EntityFrameworkCore": "1.0.0", 
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0" 
}, 
"tools": { 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 
} 
} 

Ngoài ra nó là một ý tưởng tốt để sử dụng imports, bởi vì một số phụ thuộc EF Core vẫn không hỗ trợ .NETStandard, nhưng trong trường hợp của bạn, tôi đã kiểm tra và nó hoạt động mà không cần nhập khẩu.

Về bình luận của Johan B, trong đó nêu cụ ef không thể được sử dụng với các thư viện lớp cho bây giờ, nó được phần nào giải quyết bằng cách sử dụng --startup-project khắc phục, ví dụ: dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb, thông tin thêm: Parameterize directories used by dotnet-ef.

Các vấn đề liên quan