.net core 如何从命令行运行.NET核心控制台应用程序

.net core 如何从命令行运行.NET核心控制台应用程序,.net-core,command-line,console-application,.net Core,Command Line,Console Application,我有一个.NET核心控制台应用程序,并运行了dotnet publish。但是,我不知道如何从命令行运行应用程序。有什么提示吗?如果它是一个依赖于框架的应用程序(默认设置),您可以通过dotnetyourapp.dll运行它 如果它是一个独立的应用程序,您可以在Windows上使用yourapp.exe,在Unix上使用/yourapp运行它 有关这两种应用程序类型之间差异的更多信息,请参阅.Net Docs上的文章。您也可以像任何其他控制台应用程序一样运行应用程序,但只能在发布后运行 假设您有

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

如果它是一个依赖于框架的应用程序(默认设置),您可以通过
dotnetyourapp.dll
运行它

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


有关这两种应用程序类型之间差异的更多信息,请参阅.Net Docs上的文章。

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

假设您有一个名为MyTestConsoleApp的简单控制台应用程序。 打开package manager控制台并运行以下命令:

dotnet publish -c Debug -r win10-x64 
>> MyTestConsoleApp.exe argument-list
-c标志表示您希望使用调试配置(在其他情况下,您应该使用Release值) -r标志意味着您的应用程序将在具有x64体系结构的Windows平台上运行

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

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

dotnet publish -c Debug -r win10-x64 
>> MyTestConsoleApp.exe argument-list
例如:

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

您可以非常轻松地创建EXE(用于Windows),而无需使用任何神秘的构建命令。您可以在VisualStudio中正确地执行此操作

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

  • 使用dotnetcore3.0,您可以使用
    PublishSingleFile
    属性将整个解决方案打包到单个文件可执行文件中

    -p:PublishSingleFile=True
    
    来源

    自包含
    发布
    OSX可执行文件的示例:

    dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True
    
    dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True
    
    自包含
    调试
    Linux 64位可执行文件的示例:

    dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True
    
    dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True
    
    Linux构建独立于发行版,我发现它们在Ubuntu 18.10、CentOS 7.7和Amazon Linux 2上工作

    自包含的可执行文件包括Dotnet运行时,运行时不需要安装在目标计算机上。已发布的可执行文件保存在以下位置:

    /bin//netcoreapp3.0//publish/
    在Linux、OSX和


    \bin\\netcoreapp3.0\\publish\
    在Windows上。

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

    要使用windows命令行运行console项目,请从目录中选择特定路径并键入以下命令

    网络运行


    在cmd提示符中运行之前,请确保“appsettings.json”的值与“appsettings.Development.json”的值相同


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

    转到
    ..\bin\Debug\net5.0
    (根据您使用的框架,net5.0也可以类似于“netcoreapp2.2”)

    点击电源外壳打开电源外壳,如图所示

    键入powershell:
    \yourApp.exe


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

    我花了这么长时间才发现这一点,真是太神奇了。我正在尝试各种各样的“dotnet run”命令,等等。这是我在大量搜索中遇到的第一个地方,它提供了运行控制台应用程序的正确dotnet用法。为什么Microsoft使.NET Core对开发人员如此不友好?@GlenThomas如果您想运行正在开发的应用程序,可以使用
    dotnet run
    。还有,你在哪里找的?您希望从何处获得这些信息?对于使用较新的MSBuild csproj安装程序而不是旧的project.json文件的.NET核心项目,“dotnet run”似乎不再是这种情况。@GlenThomas这不是真的,它对新的csproj项目的作用与对project.json的作用相同。@GlenThomas,不确定这是否是您遇到的问题,但是,当您尝试使用
    dotnet run
    时,请确保您位于项目目录,而不是解决方案目录中。这可能会有所帮助:是的。还有EXE-以及217个其他文件(api-ms-win-core-namedpipe-l1-1-0.dll等)。有没有办法把它打包成一个EXE?问得好@Elton。我不知道。好吧,你必须部署所有的DLL。我认为,如果它被配置为自包含的,那么所有这些DLL都必须在那里。如果您不想让它们出现,部署模式可能需要依赖于框架。您让我的星期五!您还可以将配置添加到csproj文件:
    true