2017-01-28 59 views
5

Tôi đã cài đặt Ubuntu Core 16.04 trên Raspberry PI 3 và quản lý để có ứng dụng .NET Core console chạy trên đó bằng cách sử dụng hướng dẫn here và sử dụng .NET Core phiên bản 1.2 .0-beta-001291-00 tương thích với chip ARM.Ứng dụng ASP.NET Core trên Ubuntu trên Rasberry PI

Khi tôi làm điều tương tự với một ứng dụng ASP.NET cốt lõi cơ bản tôi nhận được lỗi sau:

Unhandled Exception: System.IO.FileLoadException: Không thể tải tập tin hoặc lắp ráp 'System.Component. Nguyên thủy, Phiên bản = 4.2.0.0, Cultire = Neutral, PublicKeyToken = b03f5f7f11d50a3a '. Định nghĩa tệp kê khai của assembly không khớp với tham chiếu assembly. (ngoại lệ từ HRESULT: 0x80131040) tại Microsoft.Extensions.FileProviders.PhysicalFileError.CreateFileWatcher (String root) tại Microsoft.AspNetCore.Hosting.Internal.HostingEnvironmentExtensions.Initialize> (IHostingEnvironment hostingEnvironment, String appplicationName, String contentRootPath, WebHostOptions tùy chọn) tại Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices() tại Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() tại Program.Main (string [] args) trong/home/Freek/aspnetcore/program.cs: dòng 12 Bị hủy bỏ

Dưới đây là nội dung của 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();  
    } 
} 

Mã này chạy tốt trên deskop với Ubuntu chạy NET Lõi 1.1 nhưng cung cấp cho các lỗi trên một PI chạy NET Lõi 1.2.0 -beta-001291-00.

Trả lời

2

Microsoft đã khớp số phiên bản của họ cho tất cả các dự án cốt lõi của họ. Hầu hết các nhà phát triển gói đều tuân theo. Vì vậy, .net core phiên bản 1.1.0 hầu hết các gói tương thích với phiên bản đó cũng là phiên bản 1.1.0

Bạn cũng cần phải cập nhật phụ thuộc dự án của mình lên phiên bản beta của chúng. Nếu bạn nhìn project.json của bạn và xem xét tất cả các phụ thuộc, hãy xem chúng trên nuget.org và nhận phiên bản beta mới nhất của chúng (1.2.0-beta-something) và cập nhật số phiên bản project.json cho số bạn tìm thấy nuget.org nó có thể hoạt động. Đó là bản beta sau khi tất cả.

Đề xuất của tôi sẽ được cài đặt .net lõi 1.1.0 trên Raspberry Pi và sau đó nó sẽ hoạt động tốt. Tuy nhiên nếu bạn không thể làm điều đó ở trên nên làm việc.

+0

.Net core 1.2.0-beta-001291-00 hiện là phiên bản duy nhất tương thích với chip cánh tay. Các phụ thuộc của dự án không có các phiên bản tương tự nên hiện tại không thể. Khi phiên bản tiếp theo của .net core được chính thức phát hành, tôi sẽ xem lại. Tôi quản lý để có được một máy chủ TCP đi mà không có phụ thuộc. Cảm ơn vì đầu vào của bạn. –

+0

Bây giờ với .net core 2.0 và sdk tương ứng, bạn có thể xuất bản cho cánh tay mà không có vấn đề: dotnet xuất bản -c Release -r linux-arm. –

Các vấn đề liên quan