2017-01-28 53 views
5

Zainstalowałem Ubuntu Core 16.04 na Raspberry PI 3 i udało mi się uruchomić na nim aplikację konsoli .NET Core, korzystając z instrukcji here i używając .NET Core w wersji 1.2 .0-beta-001291-00, która jest kompatybilna z układami ARM.Aplikacja ASP.NET Core na Ubuntu na Rasberry PI

Kiedy zrobić to samo z podstawowych aplikacji ASP.NET Core i pojawia się następujący błąd:

nieobsługiwany wyjątek: System.IO.FileLoadException: Nie można załadować pliku lub zestawu „ System.Component. Primitives, Version = 4.2.0.0, Cultire = Neutral, PublicKeyToken = b03f5f7f11d50a3a '. Złożona definicja manifestu zespołu nie pasuje do odwołania do zespołu. (Wyjątek HRESULT: 0x80131040) w Microsoft.Extensions.FileProviders.PhysicalFileError.CreateFileWatcher (string root) w Microsoft.AspNetCore.Hosting.Internal.HostingEnvironmentExtensions.Initialize> (IHostingEnvironment hostingEnvironment, String appplicationName, łańcuch contentRootPath, WebHostOptions opcji) w Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices() w Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() w Program.Main (ciąg [] args) w/home/freek/aspnetcore/program.cs: linia 12 Przerwane

Oto treść Program.cs:

using System; 
using System.IO; 
using Microsoft.AspNetCore.Hosting; 
using Microsoft.Extensions.Configuration; 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
    Console.WriteLine("Hello World API!"); 

    var builder = new ConfigurationBuilder() 
     .SetBasePath(Directory.GetCurrentDirectory()) 
     .AddJsonFile("appsettings.json", optional: true) 
     .Build(); 

    var host = new WebHostBuilder() 
     .UseKestrel() 
     .UseConfiguration(builder) 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseStartup<Startup>() 
     .Build(); 

    host.Run();  
    } 
} 

Kod działa poprawnie na deskop z Ubuntu działa .NET Core 1.1, ale daje błąd na PI działa .NET Rdzeń 1.2.0 -beta-001291-00.

Odpowiedz

2

Firma Microsoft dopasowała numery wersji wszystkich swoich podstawowych projektów. Większość deweloperów pakietów idzie w ich ślady. Tak. Większość wersji pakietu .net w wersji rdzeniowej 1.1.0 jest zgodna z wersją 1.1.0

Należy również zaktualizować zależności projektu do wersji beta. Jeśli spojrzysz na swój project.json i przejrzysz wszystkie zależności, sprawdź je na stronie nuget.org i pobierz najnowszą wersję beta (1.2.0-beta-coś) i zaktualizuj numer wersji project.json do tego, który znajdziesz na nuget.org może działać. W końcu to beta.

Moja rekomendacja to zainstalowanie .net core 1.1.0 na Raspberry Pi, a następnie powinno działać poprawnie. Jeśli jednak nie możesz tego zrobić, powyższe powinno zadziałać.

+0

.net core 1.2.0-beta-001291-00 jest obecnie jedynym kompatybilnym z układem scalonym. Zależności projektowe nie mają podobnych wersji, więc w tej chwili jest to niemożliwe. Kiedy oficjalnie wydana zostanie następna wersja .net core, powrócę do tego. Udało mi się uzyskać serwer TCP, który nie ma zależności. Dzięki za wkład. –

+0

Teraz z .net core 2.0 i odpowiednim sdk możesz publikować dla uzbrojenia bez problemów: dotnet publish -c Release -r linux-arm. –