在 Ubuntu 上运行独立的 ASP.NET Core 应用程序

2024-10-29 08:34:00
admin
原创
47
摘要:问题描述:我已经将 ASP.NET Core 应用程序发布为针对 Ubuntu 的独立应用程序。发布似乎运行良好。我已将文件复制到非常普通的 Ubuntu 机器上。现在,我该如何运行我的应用程序?我的理解是,因为它是一个独立的 .NET Core 应用程序,所以我不需要下载和安装任何 .NET Core。我的...

问题描述:

我已经将 ASP.NET Core 应用程序发布为针对 Ubuntu 的独立应用程序。发布似乎运行良好。我已将文件复制到非常普通的 Ubuntu 机器上。现在,我该如何运行我的应用程序?

我的理解是,因为它是一个独立的 .NET Core 应用程序,所以我不需要下载和安装任何 .NET Core。我的应用程序应该包含它所需的一切。

所有教程似乎都说我应该调用dotnet run。但是,“dotnet”命令行不存在(它应该发布到自包含文件夹中吗?)因此,如果我调用它,我会得到“找不到命令”。当然我可以下载 .NET Core,但这是否违背了整个自包含概念?

以下是我正在复制的文件的示例:

在此处输入图片描述


解决方案 1:

回答

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

你是正确的。运行可执行文件。

当您创建一个独立的应用程序时,发布输出“包含启动应用程序所需的完整文件集(应用程序文件和所有 .NET Core 文件)。” 其中包括可执行文件。

独立部署示例

dotnet publish -c release -r ubuntu.14.04-x64以下是简单独立应用程序的输出。将发布目录复制到 Ubuntu 并运行可执行文件。

C:\MyApp\bin\release\netcoreapp1.0/ubuntu.14.04-x64\publish\

...

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!");
    }
}

参见

本文档区分了依赖框架的部署和自包含的部署。

解决方案 2:

按照以下步骤运行您的应用程序:

  1. 将您的应用程序发布为一个独立的应用程序:

 dotnet publish -c release -r ubuntu.16.04-x64 --self-contained
  1. 将文件夹复制publish到 Ubuntu 机器

  2. 打开 Ubuntu 机器终端(CLI)并转到项目目录

  3. 提供执行权限:

chmod +x ./appname
  1. 执行应用程序

 ./appname

作者: Harit Kumar

原始答案在这里: 如何在 Linux 上运行 .NET Core 控制台应用程序

解决方案 3:

值得注意的是,使用.NET Standard 2+有两个必需步骤:

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

<属性组>

&lt;OutputType>Exe&lt;/OutputType>
&lt;TargetFramework>netcoreapp2.0&lt;/TargetFramework>

&lt;!-- Add this with the required runtimes -->
&lt;RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64&lt;/RuntimeIdentifiers>

</属性组>

  • 恢复并构建应用程序:dotnet restore &amp;&amp; dotnet build -c release -r RUNTIME

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

重要的是要注意,如果没有编辑和调用 .csproj 文件dotnet restore,则无法执行此操作,否则运行时将不会从NuGet下载,并且-r ...标志将不起作用。

解决方案 4:

您可能还想查看dotnet-packaging。它包含一个dotnet deb命令行实用程序,允许您创建一个.deb文件(即 Ubuntu 安装程序),您可以使用该文件在 Ubuntu 上安装您的应用程序。它应该可以让您更轻松地进行部署。

首先,您需要将此部分添加到您的.csproj文件中:

&lt;ItemGroup>
  &lt;PackageReference Include=&quot;Packaging.Targets&quot; Version=&quot;0.1.45&quot; />
  &lt;DotNetCliToolReference Include=&quot;dotnet-deb&quot; Version=&quot;0.1.45&quot; />
&lt;ItemGroup>

然后,运行dotnet restoredotnet deb -c Release -r ubuntu.18.04-x64 -f netcoreapp2.0。这将创建一个.deb文件,您可以使用它将应用程序部署到 Ubuntu。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用