我正在使用Visual Studio 2019发布一个自包含的.net core 2.1应用程序。发布期间会发出许多文件(应用程序文件和核心库)。
但是发布的文件中没有包含dotnet.exe。没有dotnet.exe,我将无法启动已发布的应用程序!
所以我很困惑。必须安装一个系统范围的.net内核才能使用独立的应用程序,如果是这样,那么您肯定不是独立的应用程序。
答案 0 :(得分:1)
一个独立的应用程序将包含运行该应用程序所需的一切。
要运行该应用程序,没有dotnet.exe
,而是一个名为您的应用程序的可执行文件。所以
dotnet publish myapp.csproj -r win-x64
将默认创建一个myapp.exe
。
对于Linux运行时(例如-r linux-x64
),可执行文件的扩展名将减少,并且应以./myapp
的身份运行。
如果要从IIS托管独立的ASP.NET Core应用程序,则仅需要安装.NET Core组件,因为您将需要IIS模块来引导该应用程序。不过,您可以使用这种方法来运行您不想全局安装的.NET Core运行时的更新版本或预览版本。
答案 1 :(得分:0)
通过使用“文件”查看文件来解决此问题。 事实证明,当您为Linux发布应用程序“ Foo”时,最终会得到一个名为Foo的文件,该文件实际上是一个可执行文件,它会启动整个应用程序(即及其所需的任何库等)。
换句话说,没有或不需要“ dotnet”命令。实际上,Foo代替了dotnet可执行文件。