我正试图将我的asp.net core 2应用程序发布到debian linux,但我遇到了麻烦。
在试图理解这个问题时,我在bash(windows subsystem for linux,Ubuntu)中创建了一个空的控制台应用程序,我成功地运行了它,发布了它并运行了发布的文件,但失败了。

/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格式有关。

最佳答案

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

# /mnt/c/Temp/lin2/lin2

07-24 21:36