如何从命令行运行 .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 应用程序运行代码分析