在Windows/Linux/macOS 下使用命令行开始你的.netcore 之路

准备:

sdk工具:官方提供、最后的latest .NET Core CLI t工具:官方提供

hellow  控制台app

using System;
namespace ConsoleApplication
{
   public clss Program
   {
       public static void Main(string[] args)
       {
           Console.WriteLine("Hello World!");
       }
   }
}
$ dotnet new
$ dotnet restore
$ dotnet run

快速开始:
$ dotnet new
创建一个 project.json 文件以完成依赖关系和程序的入口点.

{
    "version": "1.0.0-*",
    "buildOptions": {
        "emitEntryPoint": true
    },
    "dependencies": {
        "Microsoft.NETCore.App": {
            "type": "platform",
            "version": "1.0.0"
        }
    },  
   "frameworks": {
        "netcoreapp1.0": {
            "imports": "dnxcore50"
        }
    }
}

Program.cs:

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

$ dotnet restore
分析 project.json 文件, 下载依赖并返回结果。 (或 从一个 cache 机器 grabs ), 写 project.lock.json 文件.
project.lock.json 文件:准许和完成NuGet的graph。 其他工具将读取它,如: dotnet build 和 dotnet run, 即保证用一个正确的方式处理原代码。即: NuGet 依赖和和绑定方案.
$ dotnet run
调用dotnet build 建造运行,调用dotnet来运行应用..

$ dotnet run
Hello, World!

可以用dotnet build 来编译代码:修改 project.json 文件来满足你的要求。
首先删除"type": "platform" 依赖元素. 这个项目仅依赖"Microsoft.NETCore.App".

"dependencies": {
   "Microsoft.NETCore.App": {
       "version": "1.0.0"
   }
},

接着指明一个目标环境的运行节点,.以下为:Windows 10  64 位版本 和 Mac OS X 的 10.1版本1

"runtimes": {
 "win10-x64": {},
 "osx.10.11-x64": {}

$ dotnet restore
$ dotnet build
$ .\bin\Debug\netcoreapp1.0\win10-x64\HelloNative.exe
Hello World!

您会注意到本地应用程序需要长时间build,但运行速度快一些。随着应用程序的增长,变得更加明显。
build 进程产生一些文件. 文件在 bin\Debug\netcoreapp1.0\中,RID 选项是.项目的hellonative.dll,有一个hellonative.exe,它完成运行库加载和启动应用程序。注意,所生成的应用程序的名称被更改,因为项目目录的名称已更改。
您可能希望将此应用程序包,放在网络运行时的机器上执行。请使用DotNet命令发布。 DotNet发布命令创建一个新的子目录。/bin/debug / netcoreapp1.0 / < >目录称为发布平台。它复制可执行文件,所有相关的DLL和框架,可以将该目录复制到另一台机器(或一个容器)并在那里执行应用程序。
以下为:第一个Hello World示例发布。程序是一个可移植的应用程序,默认类型的应用程序。一种便携式应用程序,在目标机器上安装了一个网络核心。便携式应用可以建立在一台机器上,并在任何地方执行。本地应用程序必须单独为每个目标机构建。DotNet发布创建一个目录,应用程序的dll,和任何相关的DLL,不是平台安装部分。
建议program
让我们改变文件一点点。斐波那契数列是有趣的:
Program.cs:

using static System.Console;
namespace ConsoleApplication
{
   public class Program
   {
       public 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;  
       }

public static void Main(string[] args)
       {
           WriteLine("Hello World!");
           WriteLine("Fibonacci Numbers 1-15:");

for (int i = 0; i < 15; i++)
           {
               WriteLine($"{i+1}: {FibonacciNumber(i)}");
           }
       }
   }
}

开始运行:假设在windows里,项目目录为: Fibonacci:

$ dotnet build
$ .\bin\Debug\netcoreapp1.0\win10-x64\Fibonacci.exe
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

单一的文件是简单的一次性程序,多个文件有多个组件。多个文件是一种好的方法。 创建一个新的文件,并给它一个唯一的命名空间::

using System;
namespace NumberFun
{
   // code can go here
}
以下是 Program.cs文件:
using static System.Console;
using NumberFun;<< span="">

build它:
$ dotnet build
使新的文件做一些事情            
例如:一个斐波那契序列发生,比如说建立了以前的斐波那契,缓存一些斐波纳中间值和添加一些递归。更好的斐波那契的例子看起来像这样:

using System;
using System.Collections.Generic;

namespace NumberFun
{
   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 IEnumerableGenerate(int n)
       {
           for (int i = 0; i < n; i++)
           {
               yield return FibValue(i);
           }
       }
   }
}

注意,使用Dictionary< int,int,int>和IEnumerable均在System.Collections namespace< >系统中。microsoft.netcore.app包是一元软件包,包含了许多NET框架的核心组件。通过包括本元软件包,你已经有system.collections.dll组件作为项目的一部分。你可以通过运行验证这个模块发布和检查是安装包的一部分文件。你会看到列表中的system.collections.dll。

{
 "version": "1.0.0-*",
 "buildOptions": {
   "debugType": "portable",
   "emitEntryPoint": true
 },
 "dependencies": {},
 "frameworks": {
   "netcoreapp1.0": {
     "dependencies": {
       "Microsoft.NETCore.App": {
         "version": "1.0.0"
       }
     },
     "imports": "dnxcore50"
   }
 },
 "runtimes": {
   "win10-x64": {},
   "osx.10.11-x64": {}
 }
}

调整在Program.cs文件下main()方法、如下所示。假设cs使用System;声明,有一个使用using static System.Console。

public static void Main(string[] args)
{
   var generator = new FibonacciGenerator();
   foreach (var digit in generator.Generate(15))
   {
       WriteLine(digit);
   }
}
完成运行
$ dotnet run
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377

使用文件夹组织代码,通过添加多个文件,确保给他们的命名空间.
/MyProject
|__Program.cs
|__AccountInformation.cs
|__MonthlyReportRecords.cs
|__project.json
当你的项目的规模相对较小,这是伟大的作品。然而,如果你有一个更大的应用程序,有许多不同的数据类型和潜在的多个层,这是文件夹的发挥。你可以创建自己的文件和文件夹。            
/NewTypes
|__/Model
|__Program.cs
|__project.json
增加新的类型到文件夹:
/NewTypes
|__/Model
  |__AccountInformation.cs
  |__MonthlyReportRecords.cs
|__Program.cs
|__project.json
同一个目录使用同一个明媚空间
Program.cs.
Example: Pet Types
以下为创建两个新类型例子.
Folder Structure:
/NewTypes
|__/Pets
  |__Dog.cs
  |__Cat.cs
  |__IPet.cs
|__Program.cs
|__project.json

IPet.cs:
using System;
namespace Pets
{
   public interface IPet
   {
       string TalkToOwner();
   }
}
Dog.cs:
using System;
namespace Pets
{
   public class Dog : IPet
   {
       public string TalkToOwner() => "Woof!";
   }
}
Cat.cs:
using System;
namespace Pets
{
   public class Cat : IPet
   {
       public string TalkToOwner() => "Meow!";
   }
}
Program.cs:
using System;
using Pets;
using System.Collections.Generic;
namespace ConsoleApplication
{
   public class Program
   {
       public static void Main(string[] args)
       {
           Listpets = new List
           {
               new Dog(),
               new Cat()  
           };

foreach (var pet in pets)
           {
               Console.WriteLine(pet.TalkToOwner());
           }
       }
   }
}
project.json:
{
 "version": "1.0.0-*",
 "buildOptions": {
   "emitEntryPoint": true
 },
 "dependencies": {
   "Microsoft.NETCore.App": {
     "type": "platform",
     "version": "1.0.0"
   }
 },
 "frameworks": {
   "netcoreapp1.0": {
     "imports": "dnxcore50"
   }
 }
}

开始运行

$ dotnet restore
$ dotnet run<< span="">

Woof!
Meow!

新的宠物类型可以添加(如鸟),扩展这个项目。
这里有一个很好的方法来做:动源你现有的项目进入了一个新的SRC文件夹。

/Project
|__/src
1.Create a /test directory.
/Project
|__/src
|__/test
2,Create a new global.json file:
/Project
|__/src
|__/test
|__global.json
3.global.json:
{
  "projects": [
     "src", "test"
  ]
}

该文件告诉构建系统,这是一个多项目系统,它允许寻找依赖关系,而不仅仅是当前文件夹中的执行情况。这是很重要的,因为它允许您将依赖于测试项目中的代码放在测试中。 例如:扩展新项目 现在项目系统已就位,您可以创建测试项目并开始编写测试项目!从这里开始,本指南将使用和扩展示例类型项目。此外,它将使用xUnit测试框架。随时按照或创建自己的多项目系统测试。
整个项目结构应该是这样的:   
/NewTypes
|__/src
  |__/NewTypes
     |__/Pets
        |__Dog.cs
        |__Cat.cs
        |__IPet.cs
     |__Program.cs
     |__project.json
|__/test
  |__NewTypesTests
     |__PetTests.cs
     |__project.json
|__global.json

有两个新的东西,以确保你在你的测试项目:
一个正确的project.json
参考xUnit
参考模块测试xUnit
在测试中对应于代码的命名空间的引用
XUnit测试类。
newtypestests / project.json: :

{
 "version": "1.0.0-*",
 "testRunner": "xunit",

"dependencies": {
   "Microsoft.NETCore.App": {
     "type":"platform",
     "version": "1.0.0"
   },
   "xunit":"2.2.0-beta2-build3300",
   "dotnet-test-xunit": "2.2.0-preview2-build1029",
   "NewTypes": "1.0.0"
 },
 "frameworks": {
   "netcoreapp1.0": {
     "imports": [
       "dnxcore50",
       "portable-net45+win8"
     ]
   }
 }

PetTests.cs:

using System;
using Xunit;
using Pets;
public class PetTests
{
   [Fact]
   public void DogTalkToOwnerTest()
   {
       string expected = "Woof!";
       string actual = new Dog().TalkToOwner();

Assert.Equal(expected, actual);
   }

[Fact]
   public void CatTalkToOwnerTest()
   {
       string expected = "Meow!";
       string actual = new Cat().TalkToOwner();

Assert.Equal(expected, actual);
   }
}}

现在开始测试,请确保在顶级目录
$ dotnet restore
$ cd test/NewTypesTests
$ dotnet test
输出: 
xUnit.net .NET CLI test runner (64-bit win10-x64)
 Discovering: NewTypesTests
 Discovered:  NewTypesTests
 Starting:    NewTypesTests
 Finished:    NewTypesTests
=== TEST EXECUTION SUMMARY ===
  NewTypesTests  Total: 2, Errors: 0, Failed: 0, Skipped: 0, Time: 0.144s
SUMMARY: Total: 1 targets, Passed: 1, Failed: 0.

转载于:https://blog.51cto.com/risingair/1873556

使用命令行开始你的netcore之路相关推荐

  1. netcore命令行部署|跨域问题

    1.在hosting中修改发布端口号,如遇见不识别IP则改成*再用命令行运行 { "server.url": "http://*:8089" } 3.给接口开外 ...

  2. 使用.NET Core快速开发一个较正规的命令行应用程序

    程序员的世界,命令行工具一直是"体验非常友好"的工具,也能自动化完成很多事情,同时还能结合shell来进行某项任务的批处理(脚本).在.NET Core中,命令行应用程序是基础,但 ...

  3. EFCore之命令行工具

    介绍 EFCore工具可帮助完成设计数据库时候的开发任务,主要用于通过对数据库架构进行反向工程来管理迁移和搭建DbContext和实体类型.EFCore .NET命令行工具是对跨平台.NET Core ...

  4. FreeSql.Generator命令行代码生成器是如何实现的

    目录 FreeSql介绍 FreeSql.Generator RazorEngine.NetCore 源码解析 FreeSql.Tools FreeSql FreeSql 是功能强大的对象关系映射技术 ...

  5. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  6. 【C/C++】VS的cl命令 | 配置环境变量 | 使用命令行编译C/C++程序

    文章目录 一.前言 二.准备 三.配置环境变量 1. 逐步配置 2. 一步到位 四.语法 更多文章 一.前言 作为一个C++ (C语言) 程序员,VS可谓是编写代码的神器(天下第一IDE!).但是它的 ...

  7. mysql generator 命令_FreeSql.Generator命令行代码生成器是如何实现的

    目录 FreeSql介绍 FreeSql.Generator RazorEngine.NetCore 源码解析 FreeSql.Tools FreeSql FreeSql 是功能强大的对象关系映射技术 ...

  8. ECS(Linux)连接RDS,使用命令行方式连接实例

    使用命令行方式连接实例 通过命令行连接RDS MySQL数据库,连接方式如下: mysql -h<连接地址> -P<端口> -u<用户名> -p -D<数据库 ...

  9. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

最新文章

  1. 80年代高考数学卷,共10套,有您做过的高考卷吗?
  2. ​超大规模时空数据的分布式存储与应用
  3. 《麻省理工学院技术评论》评出最新十大突破性技术
  4. 17秋福师《计算机应用基础》在线作业一,福师17春秋学期《计算机应用基础》在线作业一...
  5. 清理计算机英语是什么,如何清理电脑(国外英文资料).doc
  6. matlab 调用opencv,matlab调用opencv (mac 或 linux)
  7. 使用extern C改善显式调用dll
  8. 丘成桐科学奖计算机类,2017东润丘成桐科学奖计算机参赛指引.PDF
  9. 春招快到了,送你一份数据分析常见面试题
  10. PHP生成唯一会员卡号
  11. mysql sql归类_带有归类SQL强制转换SQL Server归类介绍
  12. 目标检测之2015iccv---objdetection 专题论文
  13. python爬虫网易云音乐评论最多的歌_网易云音乐歌曲评论爬虫
  14. 探索汽车行业大数据应用
  15. 入职美团定级P7,总结2022年最新最全180道高级岗面试题及答案
  16. www.etiger.vip DEVC++练习(入门)
  17. 【GAN】Mode Collapse 和 Mode Dropping 问题定义
  18. 记第一次挖洞交洞历程
  19. MacBook网络连接正常无法访问网页
  20. 简述PHP是什么?PHP文件是什么?

热门文章

  1. prev php,PHP prev() 函数 ——jQuery中文网
  2. automapper自动创建映射_ASP.NET Core教程:ASP.NET Core使用AutoMapper
  3. android image 转yuv_Android将camera获取到的YuvData在jni中转化为Mat方法
  4. 下滑加载更多js_vue.js怎么实现滑动到底部加载更多数据效果?
  5. mysql运行一下自己就停_MySQL运行一段时间后自动停止问题的排查
  6. Python学习笔记:利用sorted()函数对序列排序
  7. 2017.10.17 Codechef MARCH14 GERALD07加强版 失败总结
  8. java socket 编程 客户机服务器_Java Socket编程服务器响应客户端实例代码
  9. 【英语学习】【Level 08】U05 Better option L1 Message sent
  10. 【英语学习】【Daily English】U15 Culture L03 How will that help me to fit in