.NET Core 编程指南中文版 —— 2.9 入门 -> 使用命令行在 Windows/Linux/macOS 上入门 .NET Core

使用命令行在 Windows/Linux/macOS 上入门 .NET Core

本主题将演示如何使用 .NET Core CLI 工具开始在计算机上开发跨平台应用。

如果熟悉 .NET Core CLI 工具集,请阅读 .NET Core SDK 概述

系统必备

Hello,控制台应用!

若要查看或下载示例代码,可以访问 dotnet/samples GitHub 存储库。 有关下载说明,请参阅示例和教程

打开命令提示符,创建一个名为“Hello”的文件夹。 导航到创建的文件夹,键入下列内容:

$ dotnet new console
$ dotnet run

让我们进行快速演练:

  1. $ dotnet new console

    dotnet new 会创建一个最新的 Hello.csproj 项目文件,其中包含生成控制台应用所必需的依赖项。 它还将创建 Program.cs,这是包含应用程序的入口点的基本文件。

    Hello.csproj

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.2</TargetFramework>
      </PropertyGroup>
    
    </Project>
    

    项目文件指定还原依赖项和生成程序所需的一切。

    • OutputType 标记指定我们要生成的可执行文件,即控制台应用程序。
    • TargetFramework 标记指定了要面向的 .NET 实现。 在高级方案中,可以指定多个目标框架,并在单个操作中生成所有目标框架。 在本教程中,我们将仅针对 .NET Core 2.2 进行生成。

    Program.cs

    using System;
    
    namespace Hello
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
            }
        }
    }
    

    该程序从 using System 开始,这意味着“将 System 命名空间中的所有内容都纳入此文件的作用域”。 System 命名空间包括基本的结构,如 string 或数值类型。

    接着定义一个名为 Hello 的命名空间。 你可以将其更改为任何你喜欢的名称。 在该命名空间中定义了一个名为 Program 的类,其中 Main 方法将字符串数组作为其参数。 此数组包含了在调用编译的程序时所传递的参数列表。 如其所示,此数组没有被使用:程序所进行的全部操作就是输出 “Hello World!” 。 稍后将对代码进行更改,以使用此数组。

     备注

    从 .NET Core 2.0 SDK 开始,无需运行 dotnet restore,因为它由所有需要还原的命令隐式运行,如 dotnet newdotnet build 和 dotnet run。 在执行显式还原有意义的某些情况下,例如 Azure DevOps Services 中的持续集成生成中,或在需要显式控制还原发生时间的生成系统中,它仍然是有效的命令。

    dotnet new 隐式调用 dotnet restore。 dotnet restore 调用到 NuGet(.NET 包管理器)以还原依赖项树。 NuGet 分析 Hello.csproj 文件、下载文件中定义的依赖项(或从计算机缓存中获取)并写入 obj/project.assets.json 文件,该文件在编译和运行示例时需要使用。

     重要

    如果你使用的是 .NET Core 1.x 版本的 SDK,在调用 dotnet new 后,必须自行调用 dotnet restore

  2. $ dotnet run

    dotnet run 调用 dotnet build 来确保已生成要生成的目标,然后调用 dotnet <assembly.dll> 运行目标应用程序。

    $ dotnet run
    Hello World!
    

    或者,还可以执行 dotnet build 来编译代码,而不运行已生成的控制台应用程序。 这使得编译的应用程序(作为 DLL 文件)可以在 Windows 上使用 dotnet bin\Debug\netcoreapp2.1\Hello.dll 运行(将 / 用于非 Windows 系统)。 还可以对应用程序指定参数,相关操作将在本主题稍后部分进行介绍。

    $ dotnet bin\Debug\netcoreapp2.1\Hello.dll
    Hello World!
    

    在高级方案中,可以将应用程序作为自包含的、特定于平台的文件集生成,该应用程序可以在未安装 .NET Core 的计算机上部署或运行。 请参阅 .NET Core 应用程序部署了解详细信息。

扩充程序

让我们稍微更改一下程序。 Fibonacci 数字很有意思,让我们来添加 Fibonacci 数字,另外,也使用参数来和运行应用的用户打个招呼。

  1. 将 Program.cs 文件的内容替换为以下代码:

    using System;
    
    namespace Hello
    {
        class Program
        {
            static void Main(string[] args)
            {
                if (args.Length > 0)
                {
                    Console.WriteLine($"Hello {args[0]}!");
                }
                else
                {
                    Console.WriteLine("Hello!");
                }
    
                Console.WriteLine("Fibonacci Numbers 1-15:");
    
                for (int i = 0; i < 15; i++)
                {
                    Console.WriteLine($"{i + 1}: {FibonacciNumber(i)}");
                }
            }
    
            static int FibonacciNumber(int n)
            {
                int a = 0;
                int b = 1;
                int tmp;
    
                for (int i = 0; i < n; i++)
                {
                    tmp = a;
                    a = b;
                    b += tmp;
                }
    
                return a;
            }
    
        }
    }
    
  2. 执行 dotnet build 以编译更改。

  3. 运行向应用传递参数的程序:

    $ dotnet run -- John
    Hello John!
    Fibonacci Numbers 1-15:
    1: 0
    2: 1
    3: 1
    4: 2
    5: 3
    6: 5
    7: 8
    8: 13
    9: 21
    10: 34
    11: 55
    12: 89
    13: 144
    14: 233
    15: 377
    

就是这么简单! 可以按任意喜欢的方式扩充 Program.cs

使用多个文件

对于简单的一次性程序,使用单个文件即可,但如果要生成更复杂的应用,则项目上可能需要多个源文件。让我们通过缓存一些 Fibonacci 值,基于之前的 Fibonacci 示例来生成这类应用,并添加一些递归特性。

  1. 使用以下代码将新文件添加到名为 FibonacciGenerator.cs 的 Hello 目录:

    using System;
    using System.Collections.Generic;
    
    namespace Hello
    {
        public class FibonacciGenerator
        {
            private Dictionary<int, int> _cache = new Dictionary<int, int>();
            
            private int Fib(int n) => n < 2 ? n : FibValue(n - 1) + FibValue(n - 2);
            
            private int FibValue(int n)
            {
                if (!_cache.ContainsKey(n))
                {
                    _cache.Add(n, Fib(n));
                }
                
                return _cache[n];
            }
            
            public IEnumerable<int> Generate(int n)
            {
                for (int i = 0; i < n; i++)
                {
                    yield return FibValue(i);
                }
            }
        }
    }
    
  2. 更改 Program.cs 文件中的 Main 方法,以实例化新的类并调用其方法,如下例所示:

    using System;
    
    namespace Hello
    {
        class Program
        {
            static void Main(string[] args)
            {
                var generator = new FibonacciGenerator();
                foreach (var digit in generator.Generate(15))
                {
                    Console.WriteLine(digit);
                }
            }
        }
    }
    
  3. 执行 dotnet build 以编译更改。

  4. 通过执行 dotnet run 来运行应用。 以下是程序输出:

    $ dotnet run
    0
    1
    1
    2
    3
    5
    8
    13
    21
    34
    55
    89
    144
    233
    377
    

就是这么简单! 现在,可以开始使用此处学到的基本概念来创建自己的程序了。

请注意,本教程中用来运行应用程序的命令和步骤仅用于开发过程。 准备好部署应用后,需要查看适用于 .NET Core 应用的不同部署策略和 dotnet publish 命令。

请参阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值