I’ve published an ASP.NET Core application as a self-contained application 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 application 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:
Advertisement
Answer
Answer
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 application should contain everything it needs.
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:MyAppbinreleasenetcoreapp1.0ubuntu.14.04-x64publish
... libsos.so libsosplugin.so libuv.so Microsoft.CodeAnalysis.CSharp.dll Microsoft.CodeAnalysis.dll Microsoft.CodeAnalysis.VisualBasic.dll Microsoft.CSharp.dll Microsoft.VisualBasic.dll Microsoft.Win32.Primitives.dll Microsoft.Win32.Registry.dll mscorlib.dll mscorlib.ni.dll MyApp <------- On Ubuntu, run this executable MyApp.deps.json and you will see Hello World! MyApp.dll MyApp.pdb MyApp.runtimeconfig.json sosdocsunix.txt System.AppContext.dll System.Buffers.dll System.Collections.Concurrent.dll System.Collections.dll ...
C:MyAppproject.json
{ "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": {}, "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": "1.0.1" } } }, "runtimes": { "ubuntu.14.04-x64" : {}, "win10-x64" : {} } }
C:MyAppProgram.cs
public class Program { public static void Main(string[] args) { System.Console.WriteLine("Hello World!"); } }
See Also
This document differentiates between framework-dependent and self-contained deployments.