2016-07-14 11 views
11

Utworzono nowy projekt .NET Core za pomocą polecenia dotnet new -t lib. Jest to biblioteka klas dla mojego kontekstu EF. To jest mój project.json:Błąd narzędzia EF 7 .NET Core

{ 
    "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" 
     } 
    } 
    } 
} 

Kiedy biegnę dotnet restore polecenie Dostaję taki błąd:

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: 

Jak mogę używać EF kod najpierw z netstandard1.6?

+0

Pamiętaj, że korzystając z narzędzi dla Enity Framework nie obsługuje jeszcze bibliotek klasowych, więc wykonanie 'dotnet ef' nie powiedzie się. Zobacz https://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html#targeting-class-library-projects-jest-nieobsługiwane w celu obejścia. –

+0

@JohanB Częściowo rozwiązano to za pomocą obejścia '--startup-project', na przykład:' dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations dodaj InitDb', spójrz na to: [Sparametryzuj katalogi używane przez dotnet-ef] (https://github.com/aspnet/EntityFramework/pull/5680) –

+0

@HamidMosalla To jest rozwiązanie, którego szukałem. Czy mógłbyś zaktualizować swoją odpowiedź tym komentarzem, aby móc oznaczyć ją jako właściwą odpowiedź? – alexxjk

Odpowiedz

14

Według this The "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" powinien być zarejestrowany w sekcji Narzędzia w 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" 
} 
} 

Również jest to dobry pomysł, aby użyć imports, ponieważ niektóre z zależnościami EF rdzeń wciąż nie obsługuje .NETStandard, ale w twoim przypadku sprawdziłem i działa nawet bez importu.

Odnośnie komentarza Johan B, który stanowi, narzędzia EF nie może być używany z bibliotek klas do teraz, jest ona częściowo rozwiązać poprzez zastosowanie --startup-project obejście, na przykład: dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb, Więcej informacji: Parameterize directories used by dotnet-ef.