2016-12-04 17 views
6

Obecnie tworzę aplikację komputerową w WPF, która korzysta z biblioteki .NET Core, aby ułatwić przenoszenie na różne platformy. Jednak nie mogę odwoływać się do biblioteki .NET Core z aplikacji WPF.Bibliotekę .NET Core 1.0 z pakietu WPF

Próbowałem follwing rozwiązania:

  • referencyjne projekt: Visual Studio narzeka projekt nie będąc .exe lub .dll, mimo że jest.

  • Odniesienie do skompilowanego pliku dll: To jest naprawdę brzydkie, ale wydaje się działać na początku. Intellisense jest w porządku, a projekt WPF kompiluje się dobrze. Ale gdy tylko chcę użyć jakiejkolwiek funkcjonalności z projektu .NET Core, generowany jest wyjątek BadImageFormatException.

  • projekt i odniesienie do pliku .nupkg: instaluje pakiet dodatkowych pakietów i generuje wyjątek BadImageFormatException, gdy używana jest jakakolwiek funkcjonalność.

Z tego co mogę zbierają istnieją dwie opcje tutaj:

  • zrobić coś naprawdę hacky jak robienie projektu NET Rdzeń Console i zaliczenie wszystkich przedmiotów jako ciągi między tymi dwoma programami

Lub:

  • Wystarczy zrezygnować z .NET Rdzenia i używać EF6.

Oto mój project.json:

{ 
    "version": "1.0.0-*", 

    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true 
    }, 

    "dependencies": { 
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Design": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     } 
     }, 
     "imports": "dnxcore50" 
    }, 
    "dnx451": {} 
    }, 

    "tools": { 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 
    } 
} 

Próbowałem zarówno dnx451 i net451. Projekt WPF jest również ukierunkowany na .net 4.5.1. Używam "Visual Studio 2015 Update 3" z ".NET Core 1.0.1 VS 2015 Tooling Preview 2".

Odpowiedz

4

Twoja project.json nie jest poprawna dla biblioteki. Projekt biblioteki powinien wyglądać następująco:

{ 
    "dependencies": { 
     "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0", 
     "Microsoft.EntityFrameworkCore.Design": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
     } 
    }, 
    "frameworks": { 
    "net451": { }, 
    "netstandard1.3": { 
     "dependencies": { 
     "NETStandard.Library": "1.6.0" 
     } 
    } 
    }, 
    "tools": { 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 
    } 
} 

Po uruchomieniu dotnet pack dwa DLL będą produkowane: jedną dla .NET 4.5.1 i jeden standard dla .NET 1.3 (lub cokolwiek netstandard chcesz docelowy). Biblioteka DLL platformy .NET 4.5.1 powinna być zgodna z projektem WPF.

+0

Przepraszamy za tak długi czas akceptacji, ale twoja odpowiedź działa dobrze, z wyjątkiem faktu, że 'dotnet ef' nie działa, jeśli nie emituję punktu wejścia. Sposób obejścia tego problemu jest dość prosty (wystarczy przywrócić linię), ale pomyślałem, że warto o tym wspomnieć. –

+0

@AlexanderHoischen Ciekawe, nie widziałem tego wcześniej. –

Powiązane problemy