.net core 2 应用程序 运行s 成功但发布的应用程序没有 运行

.net core 2 application runs successfully but the published app does not run

我正在尝试将我的 asp.net 核心 2 应用程序发布到 debian linux,但我遇到了麻烦。

在尝试理解问题时,我在 bash(linux、Ubuntu 的 windows 子系统)中创建了一个空的控制台应用程序,我 运行 它成功了,我发布了它和 运行 发布的文件,它失败了。

/mnt/c/Work/Temp/lin2# dotnet new Console
/mnt/c/Work/Temp/lin2# dotnet run
Hello World!
/mnt/c/Work/Temp/lin2# dotnet publish -c Release --self-contained --runtime linux-x64 -o /mnt/c/Temp/lin2
/mnt/c/Work/Temp/lin2# /mnt/c/Temp/lin2/lin2.dll

Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The module was expected to contain an assembly manifest.

<OutputType>Exe</OutputType> 已设置(默认情况下),但编译后的程序集具有 dll 文件扩展名。 我尝试 google 如何创建 exe 文件,但大多数回复都与旧的 project.json 格式有关。

对于自包含部署,该工具将生成一个可执行文件,其中包含一个主机,该主机将加载 运行time 和包含托管代码的 dll 到 运行。您试图调用 运行 无法调用的 dll 文件。相反,应该有一个无扩展的 ELF 可执行文件:

# /mnt/c/Temp/lin2/lin2