First, I'm a Linux newbie so forgive me.
I've published an ASP .NET Core application as a self-contained app targeting Ubuntu. The publish seems to work fine. I've copied the files to a pretty vanilla Ubuntu machine. Now, how do i run my application? My understanding is that because it is a self-contained .NET Core application I DO NOT need to download and install .NET Core anything. My app should contain everything it needs.
All tutorials seem to say i should call $dotnet run. However the "dotnet" command line doesn't exist (is it supposed to be published into the self-contained folder??) So if i call it, i get "command not found". Of course i could download .NET Core, but doesn't that go against the whole self-contained concept? Here is a sample of the files i'm copying over.
Its worth noting that with the .netstandard2+, there are two required steps:
dotnet restore && dotnet build -c release -r RUNTIME
Where RUNTIME is one of the runtimes listed in the csproj file.
Importantly note that you cannot do this without the .csproj file edit and calling dotnet restore, or the runtime will not be downloaded from nuget, and the
-r ...
flag will not work.You may want to check out dotnet-packaging as well. It includes a
dotnet deb
command line utility which allows you to create a.deb
file (i.e. a Ubuntu installer) which you can use to install your app on Ubuntu. It should make deployment easier for you.To get started, you'll first need to add this section to your
.csproj
file:Then, run
dotnet restore
anddotnet deb -c Release -r ubuntu.18.04-x64 -f netcoreapp2.0
. This will create a.deb
file you can use to deploy your application to Ubuntu.Answer
You are correct. Run the executable.
When you create a self-contained app, the publish output "contains the complete set of files (both your app files and all .NET Core files) needed to launch your app." That includes the executable.
Example Self-Contained Deployment
Here is the output of
dotnet publish -c release -r ubuntu.14.04-x64
for a simple self-contained application. Copy the publish directory to Ubuntu and run the executable.C:\MyApp\bin\release\netcoreapp1.0\ubuntu.14.04-x64\publish\
C:\MyApp\project.json
C:\MyApp\Program.cs
See Also
This document differentiates between framework-dependent and self-contained deployments.