Our project want to run on ARM64,I know .net core can run Console App on ARM64,so it also can run web mvc project on ARM64?
It should be able to run if you collect together the right bits.
I suspect that self-contained apps already work, or apps that only require the runtime. The SDK doesn't yet work on ARM64 but I suspect that will be resolved soon. Also, our ARM32 products works on ARMv8 machines. I've tested it.
I'd love to hear about your need for/planned use of ARM64. Drop me a line at [email protected] if you can tell me a bit more about your project.
THX all! I also work it on Raspberry Pi3 with your help yet. I'll contact you by mail.Thanks very much.
Correct me if I'm wrong Peter, but I read somewhere that in order to run ARM32 code on ARMv8, the bootloader had to be modified to place ARMv8 in 32-bit mode. This is not viable if you are looking for performance. I believe what everyone is looking for is native dotnet ARM64 run-time.
native dotnet arm64 support is in our future plans but it will not be a part of .NET Core 2.1.
There is a community build available that works on native arm64.
Thx @kizambrano ! Unfortunately, the CPU of our ARM64 bit is not compatible with the 32 bit compatibility mode. Thank you for your guidance.
Thx @Petermarcu You know, I just want to find the runtime on ARM64.So you mean that.Net Core 2.1 does not support compiling and publishing runtime for ARM64?And "There is a community build available that works on native arm64."How can I find it?Thanks!
Check out the builds on the dotnet/core-setup repo
@Petermarcu Thx! So when I publish the web project for linux with arm64 cpu on VS, which command do I need to use? Just [dotnet publish] ?
If everything is hooked up right 'dotnet publish -r linux-arm64' will do it. If things aren't wired up, you may need to put some things together in a less automated way.
Thank you so much! wonderful ,it works!
Peter,
I'm a bit lost here. If the SDK does not support ARM64, how will publishing to the arm64 produce an image that will run on it.
@kizambrano I am just use core 2.1RC1 and Peter showed me the community runtime.It works.
@kizambrano did you give it a try. The scenario is not blocked in the SDK. It was supposed to get E2E but there may be some bugs. Its not an officially supported scenario for arm64 but should work and if people hit issues, we can open them, get them fixed and people will be able to use our daily builds to get those fixes..
Yep, our project鈥檚 scenario is also about adding support for arm64, and many APIs have not been applied in depth.After all, you know. use Linux, many of the COM components on the Windows platform need to migrate and compatibility, these jobs are likely to meet the problem, and also many be needed to your advice.
Peter,
I obtained the arm64 run-time and planned to use it on a "hello world" console app. On both WIN and LINUX I get a 32-bit ARM image so it's not working for me:
$ file dotnetApp
dotnetApp: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=a6c5099ce72ebdd5bedefbffa8ed9a40992c425c, stripped
How did you obtain the arm64 runtime?
I downloaded the tarball from:
https://github.com/dotnet/core-setup/blob/master/README.md#daily-builds
This is the one I have:
dotnet-runtime-latest-linux-arm64.tar.gz
Ok, if you are doing that, you would be depending on a shared runtime. For starters, I would suggest just doing what I suggested above with dotnet publish -f linux-arm64. That will pull the whole runtime into your application for arm64. If you want to go the shared framework route later, we can work through that but its not as simple to get started.
No joy. Note I am trying to build an image on WIN to run on a LINUX/ARM64 target. I cannot create images on the target since there is no SDK. When I attempt to publish for the target I get the following:
C:\ProgramFiles\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.0.0\build\netcoreapp2.0\Microsoft.NETCore.App.targets(19,5): error : Project is targeting runtime 'linux-arm64' but did not resolve any runtime-specific packages for the 'Microsoft.NETCore.App' package. This runtime may not be supported by .NET Core. [C:\cygwin64\home\KZambrano\dotnetApp\dotnetApp.csproj]
I cannot unpack the ARM run-time on WIN, so how exactly is this supposed to work? On the target I get this from the ARM64 run-time:
ubuntu:~$ dotnet --version
Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
You need to be using the .NET Core 2.1 RC SDK or greater. https://www.microsoft.com/net/download/dotnet-core/sdk-2.1.300-rc1
You also need to be targeting netcoreapp2.1.
Thx Peter,
Finally got back to this. After I cleaned up the environment and installed with the link above, it looks much better.
dotnetHW: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=da585226095f694514d18f27c30a75a39091aab0, stripped
Much Gras!!!
Ok,
.NET Core runs on basically any glibc based distro. Assuming the version of OpenWRT/LEDE you are using is glibc based, you can try this:
I'm smelling a source cross-compile unless a runtime can take care of this.
Just sharing this so I can help a brother out. The PUBLISH -r linux-arm64 didn't run on my distro. However installing dotnet-runtime-2.0.7-linux-x64.tar and using an unpublished app did, but not out-of-the-box.
{
"runtimeOptions": {
"configProperties": {
"System.Globalization.Invariant": true
}
}
So there is joy, got a Hello World!!!
Most helpful comment
If everything is hooked up right 'dotnet publish -r linux-arm64' will do it. If things aren't wired up, you may need to put some things together in a less automated way.