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

dev*_*ife 194 .net-core

我有一个.NET Core控制台应用程序并已运行dotnet publish.但是,我无法弄清楚如何从命令行运行应用程序.任何提示?

svi*_*ick 247

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

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

有关两种应用程序类型之间差异的详细信息,请参阅.Net Docs上的.NET Core Application Deployment文章.

  • 我花了多长时间才发现这一点.我正在尝试各种"dotnet run"命令等.这是我在很多搜索中遇到的第一个地方,它为运行控制台应用程序提供了正确的dotnet用法.为什么微软让.NET Core非开发人员友好? (18认同)
  • @GlenThomas,不确定这是否是您遇到的问题,但是当您尝试使用`dotnet run`时,请确保您位于项目目录中,而不是解决方案目录中. (5认同)
  • @GlenThomas 这不是真的,[`dotnet run`](https://docs.microsoft.com/en-us/dotnet/articles/core/tools/dotnet-run) 对新的 csproj 项目的工作方式与它一样对于 project.json。 (3认同)
  • @GlenThomas如果你想运行你正在开发的应用程序,你可以使用`dotnet run`.另外,你在哪里看?你会在哪里得到这些信息? (2认同)
  • @DavidA.Gray 三年内可能会发生很多变化。 (2认同)

Jes*_*ess 43

您可以非常轻松地创建EXE(对于Windows),而无需使用任何隐秘的生成命令。您可以在Visual Studio中直接进行操作。

  1. 右键单击Console App Project,然后选择“ 发布”
  2. 将会打开一个新页面(下面的屏幕截图)
  3. 点击配置...
  4. 然后将部署模式更改为自包含依赖于框架.NET Core 3.0引入了单个文件部署,它是一个可执行文件。
  5. 如果您知道目标计算机具有.NET Core运行时,请使用“依赖于框架”,因为它将产生较少的文件来安装。
  6. 如果现在在资源管理器中查看bin文件夹,则将找到.exe文件。
  7. 您将必须与所有支持的配置文件和dll文件一起部署exe。

控制台应用发布

  • 是的 有EXE-以及217个其他文件(api-ms-win-core-namedpipe-l1-1-0.dll等)。无论如何,将其捆绑到单个EXE? (5认同)
  • 我认为将其配置为自包含的事实将要求所有这些DLL都存在。如果您不希望它们在那里,则部署模式可能需要依赖于框架 (2认同)

Teq*_*ila 17

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

假设您有一个名为MyTestConsoleApp的简单控制台应用程序.打开包管理器控制台并运行以下命令:

dotnet publish -c Debug -r win10-x64 
Run Code Online (Sandbox Code Playgroud)

-c标志表示您要使用调试配置(在其他情况下,您应该使用Release值) - r flag表示您的应用程序将在具有x64体系结构的Windows平台上运行.

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

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

>> MyTestConsoleApp.exe argument-list
Run Code Online (Sandbox Code Playgroud)

例如:

>> MyTestConsoleApp.exe --input some_text -r true
Run Code Online (Sandbox Code Playgroud)


TMT*_*TMT 5

使用 .NET Core 3.0,您可以使用以下属性将整个解决方案打包到单个文件可执行文件中PublishSingleFile

\n
-p:PublishSingleFile=True\n
Run Code Online (Sandbox Code Playgroud)\n

来源:单文件可执行文件

\n

独立的发行版OS\xc2\xa0X 可执行文件的示例:

\n
dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True\n
Run Code Online (Sandbox Code Playgroud)\n

Linux 版本独立于发行版,我发现它们可以在Ubuntu\xc2\xa018.10 (Cosmic Cuttlefish)、CentOS 7.7 和Amazon\xc2\xa0Linux \xc2\xa02 上运行。

\n

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

\n

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

\n

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

\n