2017-06-06 232 views
17

Microsoft just announced實體框架Core 2.0現在將運行在.NET Standard 2.0上。.NET 4.6.1上的Entity Framework Core 2.0

.Net Standard 2.0與.NET Framework 4.6.1兼容(如果這是正確的話)。

然而,當我嘗試添加latest NuGet package我得到一個錯誤,告訴我,我使用了錯誤的版本:

Install-Package : Could not install package 
'Microsoft.EntityFrameworkCore.SqlServer 2.0.0-preview2-25332'. You are 
trying to install this package into a project that targets 
'.NETFramework,Version=v4.6.1', but 
the package does not contain any assembly references or content files 
that are compatible with that framework. 

如果根據公告,我可以使用EF核心2.0和.NET框架4.6。 1,請有人解釋一下,如果可能的話,舉一個例子,看看會是什麼樣子。

+0

建議你在這裏報告的一個問題:https://github.com/aspnet/EntityFramework/issues – ErikEJ

回答

3

看來,爲了在.NET 4.6.1項目中包含.NET Standard 2.0庫,您需要包含NetStandard.Library.NetFramework NuGet包。當前版本的packages.config文件

例子:

<package id="NETStandard.Library.NETFramework" version="2.0.0-preview1-25305-02" targetFramework="net461" /> 
+1

VS 2017 15.5預覽3或更高版本爲你自動「自動」 – ErikEJ

+1

這個軟件包已被棄用,贊成使用Nuget 3.6+ –

1

除了安裝NETStandard.Library.NETFramework包,你可能還需要告訴年長的NuGet客戶,這確實是通過添加以下到您的兼容*.csproj文件。

<PropertyGroup> 
    <PackageTargetFallback>netstandard2.0</PackageTargetFallback> 
</PropertyGroup> 
0

通過包管理器控制檯運行Update-Package,這將神奇地更新所有的數據包包括.Net核心,默認情況下會阻止你通過的NuGet更新它們,因爲它需要磊2.0的目標,而你的目標4.6 .1即使它應該是兼容的。

如果你這樣做,項目將會完美地工作,並希望儘快更新將直接通過nuget,因爲他們的意圖是可行的。

1

去你的.csproj和改變你的TargetFramework

<PropertyGroup> 
    <PackageTargetFallback>netstandard2.0</PackageTargetFallback> 
</PropertyGroup> 

<PropertyGroup> 
    <TargetFramework>netcoreapp2.0</TargetFramework> 
    </PropertyGroup>