我试图将我的asp.net核心2应用程序发布到debian linux并且我遇到了麻烦。
在尝试理解问题的同时,我在bash(windows子系统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
文件扩展名。
我试图谷歌如何创建exe
文件,但大多数回复都与旧的project.json
格式相关。
答案 0 :(得分:1)
对于自包含部署,工具将生成包含主机的可执行文件,该主机将加载运行时和包含要运行的托管代码的dll。您试图调用不可运行的dll文件。相反应该有一个无扩展的ELF可执行文件:
# /mnt/c/Temp/lin2/lin2