.Net核心应用程序无法在Linux上运行?

ca9*_*3d9 1 c# linux .net-core

我在Visual Studio中创建了一个.Net核心C#控制台应用程序,并使用以下步骤在Linux上进行测试.

  1. 使用Visual Studio"生成 - >发布"菜单项在中创建可执行文件....\bin\Release\netcoreapp2.1\publish.
  2. 将"publish"目录复制到Linux计算机
  3. 在Linux上, chmod 777 myApp.dll
  4. ./myApp.dll

但是,执行应用程序会显示错误

-bash:./ myApp.dll:无法执行二进制文件

Oma*_*jid 6

看起来你做了一个Framework-Dependendent部署.从本质上讲,发布命令是:

dotnet publish -c Release
Run Code Online (Sandbox Code Playgroud)

FDD假定您将拥有.NET Core运行时以在目标平台上运行您的应用程序.

publish目录复制到另一台计算机(可能是Linux,macOS或Windows)后,您的应用程序仍需要.NET Core运行时来运行您的应用程序.

安装.NET Core运行时取决于您使用的特定Linux发行版.安装完成后,您可以通过执行以下操作来运行应用程序:

dotnet /path/to/publish/myApp.dll
Run Code Online (Sandbox Code Playgroud)

框架相关部署的替代方案是自包含部署.在此模式下,已发布的应用程序将包含您的应用程序以及.NET Core运行时的副本.在命令行上,执行SCD发布如下所示:

dotnet publish -r linux-x64 -c Release
Run Code Online (Sandbox Code Playgroud)

要在Visual Studio中执行此操作,请参阅上面的链接.然后,您应该看到bin\Release\netcoreapp2.1\linux-x64\publish\包含myApp文件的目录.您可以将此发布目录复制到Linux发行版,然后运行:

/path/to/linux-x64/publish/myApp
Run Code Online (Sandbox Code Playgroud)