在 Ubuntu 上运行独立的 ASP.NET Core 应用程序
- 2024-10-29 08:34:00
- admin 原创
- 46
问题描述:
我已经将 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:
按照以下步骤运行您的应用程序:
将您的应用程序发布为一个独立的应用程序:
dotnet publish -c release -r ubuntu.16.04-x64 --self-contained
将文件夹复制
publish
到 Ubuntu 机器打开 Ubuntu 机器终端(CLI)并转到项目目录
提供执行权限:
chmod +x ./appname
执行应用程序
./appname
作者: Harit Kumar
原始答案在这里: 如何在 Linux 上运行 .NET Core 控制台应用程序
解决方案 3:
值得注意的是,使用.NET Standard 2+有两个必需步骤:
编辑 .csproj 文件并添加一行包含目标运行时列表的内容:
<属性组>
<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>
</属性组>
恢复并构建应用程序:
dotnet restore && dotnet build -c release -r RUNTIME
其中 RUNTIME 是 .csproj 文件中列出的运行时之一。
重要的是要注意,如果没有编辑和调用 .csproj 文件dotnet restore
,则无法执行此操作,否则运行时将不会从NuGet下载,并且-r ...
标志将不起作用。
解决方案 4:
您可能还想查看dotnet-packaging。它包含一个dotnet deb
命令行实用程序,允许您创建一个.deb
文件(即 Ubuntu 安装程序),您可以使用该文件在 Ubuntu 上安装您的应用程序。它应该可以让您更轻松地进行部署。
首先,您需要将此部分添加到您的.csproj
文件中:
<ItemGroup>
<PackageReference Include="Packaging.Targets" Version="0.1.45" />
<DotNetCliToolReference Include="dotnet-deb" Version="0.1.45" />
<ItemGroup>
然后,运行dotnet restore
和dotnet deb -c Release -r ubuntu.18.04-x64 -f netcoreapp2.0
。这将创建一个.deb
文件,您可以使用它将应用程序部署到 Ubuntu。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件