2016-08-08 27 views
6

Używam aktualizacji VS 3 (14.0.25425.01). Oto co zrobiłem:Odwołanie do biblioteki klasy .NET 4.6.2 z aplikacji .NET Core

  1. Tworzenie rdzenia ASP.Net Web Application (.NET rdzenia)
  2. Tworzenie biblioteki klas .NET 4.6.2
  3. Dodaj net462 do ram, netcoreapp1.0, importu w projekcie. json
  4. prawym przyciskiem myszy na aplikacji ASP.Net Core kliknij Add Reference, wyboru projektów, wybierz Class Library został utworzony w kroku 2.

otrzymuję żadnych błędów na przywracaniu i odniesienie zostanie dodane do ASP. Net C ore app. Nie mogę jednak uzyskać do niego dostępu. Nie mogę dodać deklaracji importu lub uzyskać dostępu do obiektów. Przeszedłem przez wiele rzeczy, ale nic nie działa, a posty są bardzo wersjonowane, podzielone.

enter image description here

Oto Program.cs w ASP.Net podstawowej aplikacji. enter image description here

enter image description here

Aktualizacja Zrobiłem to, co zaproponował Nate. Myślałem, że już to wypróbowałem ... ale na pewno mogę teraz uzyskać dostęp do moich bibliotek 4.6.2. Jednak teraz dostaję błędy kompilacji.

enter image description here

Odpowiedz

4

To działa w Visual Studio 2015 Update 3, ale twój project.json nie jest całkiem w porządku.

Zamiast dodawania net462 do sekcji imports, powinno być w sekcji frameworks:

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

Należy zauważyć, że zależność Microsoft.NETCore.App musi również zostać przeniesione do sekcji netcoreapp1.0. Dzieje się tak, ponieważ ta zależność jest wymagana tylko podczas kompilacji jako aplikacja .NET Core.

Odniesienie do biblioteki .NET 4.6.2 jest po prostu częścią sekcji dependencies:

"dependencies": { 
    (...) 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "MyLibrary": { 
    "target": "project" 
    } 
} 

Uporządkowanie to w ten sposób udało mi się odwoływać i zajęcia używać w .NET 4.6. 2 biblioteki bez żadnych problemów.


Dla porównania, oto cała project.json pracy użyłem:

{ 
    "dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "MyLibrary": { 
     "target": "project" 
    } 
    }, 
    "frameworks": { 
    "net461": { }, 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     } 
     } 
    } 
    }, 
    "version": "1.0.0-*" 
} 
+0

Czy to faktycznie kompiluje dla 'netcoreapp1.0' lub tylko dla' net461'? – svick

+0

@svick Zarówno w Visual Studio, jak i 'dotnet build', pliki binarne są tworzone zarówno dla' net461' i 'netcoreapp1.0'. –

+0

Jak? Aplikacja 'netcoreapp1.0' nie powinna być w stanie polegać na bibliotece' net461', która nie jest kompatybilna. – svick

1

@NateBarbettini odpowiedź zrealizować moje pierwotne pytanie. Ale nie mogłem uruchomić aplikacji ASP.Net Core w wersji 1 z moim projektem .Net 4.6.1, ponieważ nie mógł znaleźć zestawu .NetCore.App v1 dla mojego projektu .Net 4.6.1. Więc dodałem project.json do mojego projektu .Net 4.6.1 z następującym project.json.

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.6.0" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
    "imports": "dnxcore50" 
    }, 
    "net461": {} 
} 
} 

Następnie w ASP.Aplikacja Net Core Web modyfikuje plik project.json, dodając zależność pod .NetCore.App. W ten sposób wybierze obie wersje: 4.6.1 i .NetCore v1.

... 
"frameworks": { 
"net461": { 
    "dependencies": { 
    "ClassLibrary1": { 
     "target": "project" 
    } 
    } 
}, 
"netcoreapp1.0": { 
    "imports": [ 
    "dotnet5.6", 
    "portable-net45+win8", 
    "net461" 
    ], 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0", 
     "type": "platform" 
    }, 
    "ClassLibrary1": { 
     "target": "project" 
    } 
    } 
} 
} 

Jak na razie mogę rozwijać w .Net 4.6.1 i będzie działać pod kontrolą .NetCore.App v1. Jednak myślę, że będą problemy, gdy mam inne zależności w moich projektach .Net 4.6.1.

+0

Jakie inne zależności powodują problemy w projekcie .NET 4.6.1? –

Powiązane problemy