在Ubuntu上运行自包含的ASP .NET核心应用程序

首先,我是一个Linux新手,所以原谅我。

我已经发布了一个ASP .NET核心应用程序作为一个独立的应用程序针对Ubuntu。 发布似乎工作正常。 我已经将这些文件复制到一个非常漂亮的Ubuntu机器上。 现在,我如何运行我的应用程序? 我的理解是,因为它是一个独立的.NET核心应用程序,我不需要下载和安装.NET Core任何东西。 我的应用程序应该包含所需的一切。

所有教程似乎都说我应该打电话$ dotnet运行。 然而,“dotnet”命令行不存在(是否应该发布到独立的文件夹?)所以,如果我打电话,我得到“命令未find”。 当然,我可以下载.NET Core,但这不符合整个独立的概念吗? 这里是我复制的文件的示例。

在这里输入图像说明

Solutions Collecting From Web of "在Ubuntu上运行自包含的ASP .NET核心应用程序"

回答

现在,我如何运行我的应用程序? 我的理解是,因为它是一个独立的.NET核心应用程序,我不需要下载和安装.NET Core任何东西。 我的应用程序应该包含所需的一切。

你是对的。 运行可执行文件。

当您创建自包含的应用程序时,发布输出将包含启动您的应用程序所需的全套文件(包括您的应用程序文件和所有.NET Core文件)。 这包括可执行文件。

示例独立部署

这里是dotnet publish -c release -r ubuntu.14.04-x64对于一个简单的自包含应用程序的输出。 将发布目录复制到Ubuntu并运行可执行文件。

C:\ MyApp的\ BIN \发布\ netcoreapp1.0 \ ubuntu.14.04-64 \发布\

 ... 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:\ MyApp的\ project.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:\ MyApp的\的Program.cs

 public class Program { public static void Main(string[] args) { System.Console.WriteLine("Hello World!"); } } 

也可以看看

本文档区分了依赖于框架的部署和独立的部署。

值得注意的是.netstandard2 +有两个必需的步骤:

  • 编辑.csproj文件并添加一行包含目标运行时的列表:

<的PropertyGroup>

 <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> <!-- Add this with the required runtimes --> <RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64</RuntimeIdentifiers> 

</的PropertyGroup>

  • 还原并建立应用程序: dotnet restore && dotnet build -c release -r RUNTIME

其中RUNTIME是csproj文件中列出的运行时之一。

重要的是要注意,如果没有.csproj文件编辑和调用dotnet恢复,你不能做到这一点,否则将不会从nuget下载运行时,并且-r ...标志将不起作用。