如何从命令行运行 .NET Core 控制台应用程序

Posted

技术标签:

【中文标题】如何从命令行运行 .NET Core 控制台应用程序【英文标题】:How to run .NET Core console application from the command line 【发布时间】:2017-01-02 11:50:20 【问题描述】:

我有一个 .NET Core 控制台应用程序并已运行 dotnet publish。但是,我不知道如何从命令行运行应用程序。有什么提示吗?

【问题讨论】:

也许这会有所帮助:***.com/questions/44074121/… 【参考方案1】:

如果它是依赖框架的应用程序(默认),则通过dotnet yourapp.dll 运行它。

如果它是一个独立的应用程序,您可以在 Windows 上使用 yourapp.exe 和在 Unix 上使用 ./yourapp 运行它。

有关两种应用类型之间差异的详细信息,请参阅 .NET 文档中的 .NET Core Application Deployment 文章。

【讨论】:

我花了多长时间才发现这一点令人惊讶。我正在尝试各种“dotnet run”命令等。这是我在很多搜索中遇到的第一个地方,它给出了运行控制台应用程序的正确 dotnet 用法。为什么微软让 .NET Core 对开发人员不友好? @GlenThomas 如果要运行正在开发的应用程序,请使用dotnet run。还有,你在哪里看的?您希望从哪里获得这些信息? @GlenThomas 这不是真的,dotnet run 对新 csproj 项目的工作方式与对 project.json 的工作方式相同。 @GlenThomas,不确定这是否是您遇到的问题,但是当您尝试使用 dotnet run 时,请确保您位于项目目录中,而不是解决方案目录中。 @DavidA.Gray 3 年内会有很多变化。【参考方案2】:

您可以非常轻松地创建一个 EXE(适用于 Windows),而无需使用任何神秘的构建命令。您可以在 Visual Studio 中直接完成。

    右键单击控制台应用项目并选择发布。 将打开一个新页面(屏幕截图如下) 点击配置... 然后将Deployment Mode 更改为自包含依赖框架.NET Core 3.0 引入了单个可执行文件的单文件部署。 如果您知道目标计算机具有 .NET Core 运行时,请使用“依赖于框架”,因为它会生成更少的要安装的文件。 如果您现在在资源管理器中查看 bin 文件夹,您将找到 .exe 文件。 您必须部署 exe 以及任何支持的配置和 dll 文件。

【讨论】:

是的。有 EXE - 以及 217 个其他文件(api-ms-win-core-namedpipe-l1-1-0.dll 等)。有没有办法把它捆绑到一个 EXE 中? 好问题@Elton。我不知道。 AFAIK 你必须部署所有的 dll。 我认为它被配置为自包含的事实需要所有这些 DLL 都在那里。如果您不希望它们在那里,则部署模式可能需要依赖于框架 你成就了我的星期五!【参考方案3】:

您也可以像任何其他控制台应用程序一样运行您的应用程序,但只能在发布之后。

假设您有一个名为 MyTestConsoleApp 的简单控制台应用程序。

打开包管理器控制台并运行以下命令:

dotnet publish -c Debug -r win10-x64 

-c 标志表示您要使用调试配置(在其他情况下您应该使用 Release 值)

-r 标志意味着您的应用程序将在具有 x64 架构的 Windows 平台上运行。

发布过程完成后,您将看到位于 bin/Debug/publish 目录中的 *.exe 文件。

现在您可以通过命令行工具调用它。所以打开CMD窗口(或终端)移动到你的*.exe文件所在的目录,写下一条命令:

>> MyTestConsoleApp.exe argument-list

例如:

>> MyTestConsoleApp.exe --input some_text -r true

【讨论】:

【参考方案4】:

使用 .NET Core 3.0,您可以使用 PublishSingleFile 属性将整个解决方案打包成一个可执行文件:

-p:PublishSingleFile=True

来源:Single-file executables

独立发布 OS X 可执行文件的示例:

dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True

一个独立的、可调试的 Linux 64 位可执行文件示例:

dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True

Linux 版本独立于发行版,我发现它们在 Ubuntu 18.10 (Cosmic Cuttlefish)、CentOS 7.7 和 Amazon Linux 2 上工作。

独立的可执行文件包括 .NET 运行时,并且运行时不需要安装在目标机器上。发布的可执行文件保存在:

<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/ 在 Linux、OS X 和

<ProjectDir>\bin\<Release or Debug>\netcoreapp3.0\<target-os>\publish\ 在 Windows 上。

【讨论】:

您也可以将配置添加到 csproj 文件中:<PublishSingleFile>true</PublishSingleFile>【参考方案5】:

如果您的机器上安装了 .NET Core SDK,您可以使用 CMD 运行控制台 .NET Core 项目:

要使用 Windows 命令行运行控制台项目,请从您的目录中选择特定路径并键入以下命令:

dotnet run

【讨论】:

【参考方案6】:

在命令提示符下运行之前,请确保“appsettings.json”与“appsettings.Development.json”具有相同的值。

在命令提示符下,一直到 bin/debug/netcoreapp2.0 文件夹。然后运行“dotnet applicationname.dll”

【讨论】:

【参考方案7】:

转到...\bin\Debug\net5.0(“net5.0”也可以是“netcoreapp2.2”之类的东西,具体取决于您使用的框架。)

点击打开一个PowerShell窗口,如图所示。

在 PowerShell 窗口中输入:.\yourApp.exe

您不需要dotnet publish。只需确保在构建之前包含所有更改即可。

【讨论】:

以上是关于如何从命令行运行 .NET Core 控制台应用程序的主要内容,如果未能解决你的问题,请参考以下文章

通过命令行构建 .NET Core 应用程序,使其可以在未安装 .NET Core 的机器上运行

如何从命令行界面使用 Microsoft.CodeAnalysis.NetAnalyzers 为 .NET 应用程序运行代码分析

如何使用 ASP.NET Core 显示错误

使用命令行如何在 ASP.NET 中首先从 DB 搭建脚手架 - 而不是 ASP.NET Core MVC?

显示从 ASP.NET MVC 中的命令行进程获取的数据

.Net Core 命令行应用程序 | Process.Start() 在某些机器上运行,但在其他机器上不运行