.net core 2应用程序成功运行但已发布的应用程序未运行

时间:2017-09-17 10:56:10

标签: asp.net linux .net-core publish

我试图将我的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格式相关。

1 个答案:

答案 0 :(得分:1)

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

# /mnt/c/Temp/lin2/lin2