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

267

我有一个.NET Core控制台应用程序,并且已经运行了 dotnet publish。但是,我无法弄清如何从命令行运行该应用程序。有什么提示吗?

我有一个.NET Core控制台应用程序,并运行了dotnet publish。但是,我不知道如何在命令行中运行该应用程序。请问是否有任何提示?

也许这可以帮助你: https://dev59.com/KVcP5IYBdhLWcg3worj_ - Bent Tranberg
9个回答

338

如果这是一个基于框架的应用程序(默认),则可以通过 dotnet yourapp.dll 命令来运行它。

如果这是一个自包含的应用程序,在Windows上使用 yourapp.exe 命令,在Unix上使用 ./yourapp 命令来运行它。

有关这两种应用程序类型之间的差异的更多信息,请参阅.NET文档中的.NET Core应用程序部署文章。


30
找到这个答案花费了我很长时间,我尝试了各种“dotnet run”命令等方法。在我的搜索中,这是我找到的第一个给出正确的控制台应用程序运行方式的地方。为什么微软会使.NET Core如此不友好开发者呢? - Glen Thomas
3
如果你想运行正在开发的应用程序,可以使用dotnet run命令。另外,请问你在哪里查找过相关信息?你会在哪里期望找到这些信息呢? - svick
3
@GlenThomas 不对,dotnet run 对新的 csproj 项目的使用方式与对 project.json 项目的使用方式相同。 - svick
5
@GlenThomas,不确定你遇到的是否是这个问题,但当你尝试使用dotnet run命令时,请确保你在项目目录中,而不是解决方案目录中。 - Ryan Lundy
2
@DavidA.Gray 三年时间可以发生很多变化。 - svick
显示剩余11条评论

53

您可以在 Visual Studio 中轻松创建一个EXE文件(用于Windows),而无需使用任何晦涩的构建命令。

  1. 右键单击控制台应用程序项目,然后选择发布
  2. 将打开一个新页面(如下图所示)
  3. 点击配置...
  4. 然后将部署模式更改为独立依赖于框架.NET Core 3.0引入了单一文件部署,即单个可执行文件。
  5. 如果目标机器已安装.NET Core运行时,则使用“依赖框架”会生成较少的安装文件。
  6. 如果现在在资源管理器中查看bin文件夹,您将找到.exe文件。
  7. 您必须将exe文件与任何支持的配置和dll文件一起部署。

Console App Publish


6
是的。这里有EXE文件,以及其他217个文件(例如api-ms-win-core-namedpipe-l1-1-0.dll等)。是否有任何方法将它们捆绑成单个EXE文件? - Elton
1
好问题@Elton。我不知道。据我所知,您必须部署所有的dll。 - Jess
2
我认为它被配置为自包含的事实需要所有这些DLL都在那里。如果你不想要它们,部署模式可能需要是Framework Dependent。 - kippermand
1
你让我度过了美好的星期五! - Robin Johnson

25

你也可以像运行其他控制台应用程序一样运行你的应用程序,但必须在发布之后才能这样做。

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

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

dotnet publish -c Debug -r win10-x64 

-c 标志意味着您想使用调试配置(在其他情况下,您应该使用 Release 值)。

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

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

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

>> MyTestConsoleApp.exe argument-list
例如:
>> MyTestConsoleApp.exe --input some_text -r true

5

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

-p:PublishSingleFile=True

来源:单文件可执行文件

一个自包含、发布版本的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运行时,而且无需在目标计算机上安装运行时。发布的可执行文件保存在以下位置:
Linux、OS X:<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/ Windows:<ProjectDir>\bin\<Release or Debug>\netcoreapp3.0\<target-os>\publish\

你也可以把配置添加到csproj文件中:<PublishSingleFile>true</PublishSingleFile> - Mahdi Ataollahi

3
前往 ...\bin\Debug\net5.0(根据您使用的框架,"net5.0" 也可以是类似于 "netcoreapp2.2" 的其他内容)。

Enter image description here

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

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

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


3

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

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

dotnet run

0
如果是一个依赖框架的应用程序(默认情况下),您可以通过运行 dotnet yourapp.dll 来运行它。
文件夹路径:Bin\Debug\net5.0
步骤:
1. 切换到路径并粘贴 2. 运行 dotnet yourapp.dll
我的应用程序路径: C:\Projects\CallLetter\CallLetterConsoleApp\CallL etterConsoleApp\bin\Debug\net5.0

0
  1. 打开命令提示符或终端窗口。
  2. 导航到包含已编译的.NET Core控制台应用程序可执行文件的目录。该可执行文件的扩展名为.exe。
  3. 使用dotnet命令,后跟可执行文件的名称来运行应用程序。例如,如果您的可执行文件名为"MyApp.exe",则命令将如下所示:

dotnet MyApp.exe

  1. 按Enter键执行该命令。
  2. 您的.NET Core控制台应用程序将开始运行,并在命令提示符或终端窗口中看到输出。

就是这样!您的.NET Core控制台应用程序现已从命令行中运行。


-1

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

在命令提示符中,进入 bin/debug/netcoreapp2.0 文件夹。然后运行 "dotnet applicationname.dll"


这两个文件之所以没有相同的值,是有原因的。在dotnet run命令中添加"--environment development"要简单得多。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接