Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET Core app on Ubuntu on Raspberry PI

I've installed Ubuntu Core 16.04 on a Raspberry PI 3 and managed to get a .NET Core console app running on it by using the instructions here and using .NET Core version 1.2.0-beta-001291-00 which is compatible with ARM chips.

When I do the same with a basic ASP.NET Core app I get the following error :

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Component.Primitives, Version=4.2.0.0, Cultire=Neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.Extensions.FileProviders.PhysicalFileError.CreateFileWatcher(String root) at Microsoft.AspNetCore.Hosting.Internal.HostingEnvironmentExtensions.Initialize>(IHostingEnvironment hostingEnvironment, String appplicationName, String contentRootPath, WebHostOptions options) at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() at Program.Main(String[] args) in /home/freek/aspnetcore/program.cs: line 12 Aborted

Here is the contents of 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();       
  }  
}

The code runs fine on a deskop with Ubuntu running .NET Core 1.1 but gives the error on a PI running .NET Core 1.2.0-beta-001291-00.

like image 292
Freek Nortier Avatar asked Oct 29 '22 13:10

Freek Nortier


1 Answers

Microsoft has been matching their version numbers for all of their core projects. Most package developers are following suit. So .net core version 1.1.0 most packages that are compatible with that version are also version 1.1.0

You need to update your project dependencies to their beta versions also. If you look at your project.json and go through all the dependencies look them up on nuget.org and get their latest beta version (1.2.0-beta-something) and update the project.json version number to the one you find on nuget.org it may work. It is beta after all.

My recommendation would be to installed .net core 1.1.0 on the Raspberry Pi and then it should work fine. However if you can't do that the above should work.

like image 168
Woot Avatar answered Nov 01 '22 01:11

Woot