.NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰會上正式發布,社區里涌現了很多文章,我也計劃寫個系列文章,原因是.NET Core的入門門檻相當高,很有必要寫個深入淺出的系列文章,本節內容幫助你入門。我將可能用Windows做開發環境,也可能用Linux/Mac,但是所有的dotnet CLI命令都是跨平臺的,我們在windows/Linux/mac平臺上開發跨平臺的應用。
?
安裝.NET Core
.NET Core 包括.NET Core Runtime 和 .NET Core SDK:
.NET Core = 應用運行依賴的 .NET Core Runtime
.NET Core SDK = 使用.NET Core開發應用.NET Core Runtime 和 SDK+CLI(Software Development Kit/Command Line Interface) 工具
下載地址請到dotnet官方網站dot.net?(dot dot net),非常的好記,這個網站也是你入門學.NET Core的入口網站,記住這是個必須要去網站。.NET Core 下載的具體地址:https://www.microsoft.com/net/download#core,這里還列出了注意事項:
雖然.NET Core Runtime 和基礎庫已經1.0 RTM,但是開發工具鏈(.NET Core CLI,Visual studio 和Visual Studio Code) 還是預覽版,具體可以參看https://blogs.msdn.microsoft.com/dotnet/2016/05/06/net-core-rc2-improvements-schedule-and-roadmap/
在Windows Servers上部署應用 ,可以單獨安裝ASP.NET Core Module for IIS 而不需要安裝.NET Core runtime,可以通過命令行DotNetCore.1.0.0-WindowsHosting.exe OPT_INSTALL_REDIST=0
Mac 系統的最低要求是macOS 10.11 (El Capitan)
.NET Core 在Red Hat 系列服務器上支持的要 RHEL 7 Server,包括CentOS 7 以上,具體參看?https://access.redhat.com/documentation/en/dot-net-core/
.NET Core 在Ubuntu上面的支持 需要 Ubuntu 14.04 LTS 和? Ubuntu 16.04 LTS
如果之前安裝了.NET Core的beta,rc1,rc2的版本,在安裝之前需要把他們卸載掉,具體參見?stack overflow 的文章。
.NET Core 的具體安裝方法可以參看文章?.Net Core 系列:1、環境搭建。
?
dotnet Command Line Interface(CLI)
.NET Core 的dotnet 命令行接口(CLI)非常重要,是我們開發,運營都要使用的一套工具,Microsoft 為我們提供了這個命令行工具以供我們在開發程序中使用,它主要用來進行對代碼的編譯、NuGet 包的管理、程序的運行、測試等等。簡單的說 :當一個新人坐在座位上開始學習node, python, ruby, golang 或者其它任何東西時,對于絕大多數人來說,按照他們的經驗就應該如此。使用.NET應當被看做是一件簡單的不能再簡單的事了。學習并且使用.NET 的伙伴們有著在Go或者Ruby上有相同的經驗。這篇文章?.NET Core dotnet 命令大全?介紹了命令行的使用方法,dotnet run 命令介紹?更詳細的介紹了dotnet run命令。練習例子可以用文章?通過幾個Hello World感受.NET Core全新的開發體驗?。?
我們就來通過一個Hello World例子來學習下dotnet 命令行,我們安裝好.NET Core 1.0,就可以做下面的事情了:
>dotnet new
>dotnet restore
>dotnet run
想象著和我一塊兒,當你把這個和在Mac, Windows, Linux上運行的?Visual Studio代碼相比較時,那么你已經獲得了一個非常精彩的故事。可以很容易的在很多地方運行開源的.NET 代碼。
下面是一段比較長的的代碼,創建一個控制臺應用,只要在頂部輸入“dotnet”,就可以得到很多能用的東西。
[root@Mono helloworld]# dotnet
Microsoft .NET Core Shared Framework Host
? Version? : 1.0.1
? Build??? : cee57bf6c981237d80aa1631cfe83cb9ba329f12
Usage: dotnet [common-options] [[options] path-to-application]
Common Options:
? --help?????????????????????????? Display .NET Core Shared Framework Host help.
? --version??????????????????????? Display .NET Core Shared Framework Host version.
Options:
? --fx-version <version>?????????? Version of the installed Shared Framework to use to run the application.
? --additionalprobingpath <path>?? Path containing probing policy and assemblies to probe for.
Path to Application:
? The path to a .NET Core managed application, dll or exe file to execute.
If you are debugging the Shared Framework Host, set 'COREHOST_TRACE' to '1' in your environment.
To get started on developing applications for .NET Core, install .NET SDK from:
??http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
[root@Mono ~]# mkdir helloworld
[root@Mono ~]# cd helloworld
[root@Mono helloworld]# dotnet new
Created new C# project in /root/helloworld.
[root@Mono helloworld]# ls
Program.cs? project.json
[root@Mono helloworld]# vi Program.cs
[root@Mono helloworld]# dotnet restore
log? : Restoring packages for /root/helloworld/project.json...
log? : Writing lock file to disk. Path: /root/helloworld/project.lock.json
log? : /root/helloworld/project.json
log? : Restore completed in 2277ms.
[root@Mono helloworld]# dotnet run
Project helloworld (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling helloworld for .NETCoreApp,Version=v1.0
Compilation succeeded.
??? 0 Warning(s)
??? 0 Error(s)
Time elapsed 00:00:03.0002808
Hello World!
[root@Mono helloworld]#
通過上面這幾個基本命令就把我們的.NET Core 應用運行起來了。
dotnet new
new 命令用于創建.NET項目或者是應用
[root@Mono ~]# dotnet new --help
.NET Initializer
Usage: dotnet new [options]
Options:
? -h|--help???????????? Show help information
? -l|--lang <LANGUAGE>? Language of project [C#|F#]
? -t|--type <TYPE>????? Type of project
可以用這個命令創建幾個不同類型的的應用類型,支持C#和F#,C#語言支持的項目類型如下:
Console
Web
Library
xUnit Test
?
dotnet restore
restore命令使用NuGet還原在項目文件project.json 中定義的依賴關系和項目特定的工具。
[root@Mono ~]# dotnet restore --help
Usage: nuget3 restore [arguments] [options]
Arguments:
? [root]? List of projects and project folders to restore. Each value can be: a path to a project.json or global.json file, or a folder to recursively search fo????????????????????????????????????????????????????????? r project.json files.
Options:
? -h|--help?????????????????????? Show help information
? --force-english-output????????? Forces the application to run using an invariant, English-based culture.
? -s|--source <source>??????????? Specifies a NuGet package source to use during? the restore.
? --packages <packagesDirectory>? Directory to install packages in.
? --disable-parallel????????????? Disables restoring multiple projects in parallel.
? -f|--fallbacksource <FEED>????? A list of packages sources to use as a fallback.
? --configfile <file>???????????? The NuGet configuration file to use.
? --no-cache????????????????????? Do not cache packages and http requests.
? --infer-runtimes??????????????? Temporary option to allow NuGet to infer RIDs? for legacy repositories
? -v|--verbosity <verbosity>????? The verbosity of logging to use. Allowed values: Debug, Verbose, Information, Minimal, Warning, Error.
? --ignore-failed-sources???????? Only warning failed sources if there are packages meeting version requirement
[root@Mono ~]#
正如你可以看到從"用法:"上面的一行,還原命令只調用到 nuget3 可執行程序,通常您不需要修改這些選項,如果您使用的自定義軟件包源,要么因為您正在使用預發布版本的 Microsoft 庫或您的組織使用其自己的軟件包源,您可能需要指定使用-s 參數的軟件包源。
運行 dotnet 還原生成一個鎖文件?(project.json.lock),其中包括有關所有被恢復的軟件包的詳細的信息。
?
dotnet build
build命令會把項目和他所依賴的項目編譯成一個二進制文件,默認情況下二進制文件是Intermediate Language (IL)?和.dll 為文件擴展名。編譯過程依賴于已經存在鎖文件(project.json.lock),這是restore命令生成的。
為了生成一個可執行的應用程序,您需要確保該項目配置的編譯選項設置應用的入口點︰?
"buildOptions": {"emitEntryPoint": true}, 運行命令可以看到使用方法: > dotnet build --help .NET BuilderUsage: dotnet build [arguments] [options]Arguments: <PROJECT> ?The project to compile, defaults to the current directory. Can be one or multiple paths to project.json, project directory or globbing patter that matches project.json filesOptions: -h|--help ? ? ? ? ? ? ? ? ? ? ? ? ? Show help information -o|--output <OUTPUT_DIR> ? ? ? ? ? ?Directory in which to place outputs -b|--build-base-path <OUTPUT_DIR> ? Directory in which to place temporary outputs -f|--framework <FRAMEWORK> ? ? ? ? ?Compile a specific framework -r|--runtime <RUNTIME_IDENTIFIER> ? Produce runtime-specific assets for the specified runtime -c|--configuration <CONFIGURATION> ?Configuration under which to build --version-suffix <VERSION_SUFFIX> ? Defines what `*` should be replaced with in version field in project.json --build-profile ? ? ? ? ? ? ? ? ? ? Set this flag to print the incremental safety checks that prevent incremental compilation --no-incremental ? ? ? ? ? ? ? ? ? ?Set this flag to turn off incremental build --no-dependencies ? ? ? ? ? ? ? ? ? Set this flag to ignore project to project references and only build the root project你可以使用-f 選項來指定你想要編譯為一個特定框架。這一框架必須在項目文件中定義。-C 選項允許您指定要使用的配置。它將默認為Debug,但您可以指定為Release。
?
dotnet run
大多數情況下,你都是跳過上面的restore,build,直接使用dotnet run命令來運行程序,無論是否修改了應用程序,都是重新編譯生成應用并運行。
> dotnet run --help .NET Run Command Usage: dotnet run [options] [[--] <arg>...]]Options: -h|--help ? ? ? ? ? Show help information -f|--framework ? ? ?Compile a specific framework -c|--configuration ?Configuration under which to build -p|--project ? ? ? ?The path to the project to run (defaults to the current directory). Can be a path to a project.json or a project directory dotnet run 命令介紹 更詳細的介紹了dotnet run命令-f, --framework
使用提供的 framework 來運行,這個 framework 就是對應project.json文件中的 frameworks 節點
-c, --configuration [Debug|Release]
配置使用的環境是 Debug 還是 Release,默認為 Debug 模式。
-p, --project [PATH]
指定要運行的項目,它可以是project.json的文件路徑,可以是包含project.json的路徑,如果沒有指定,默認是當前路徑。
?
dotnet [assemblyname]
可以用dotnet命令運行已經編譯好的應用,把應用路徑作為參數傳遞給dotnet命令?
> dotnet .\bin\Debug\netcoreapp1.0\helloworld.dll
Hello World!
?
dotnet pack
pack命令編譯項目并生成NuGet包,該操作會生成兩個NuGet程序包:
一個包括已編譯代碼的程序集文件
一個包括調試符號和已編譯代碼的程序集文件
項目依賴的NuGet項目添加到生成nuspec文件中,默認情況不打包項目之間的引用關系,但可以通過更改項目的相關性類型。
?
dotnet publish
發布命令會編譯應用程序并讀取項目文件,然后將結果集的文件發布到一個目錄。生成目錄的內容將取決于項目的類型,但可以包括一個跨平臺的 IL 應用程序和他依賴項,這就是通常用的Portable部署方式,應用程序共享.NET Core運行時環境與程序集依賴,部署的目標機器上需要事先安裝.NET Core SDK,然后用dotnet命令運行程序。或者是每個本機平臺的子文件夾或自包含的應用程序,其中包括目標平臺的運行時,這就是Self-contained部署方式。Self-contained部署方式就是每個應用程序自帶.NET Core運行時環境與程序集依賴,部署的目標機器不需要安裝.NET Core SDK,將應用程序文件夾拷貝過來就能運行。?
默認的project.json編譯出來的應用沒有包括跨平臺,需要修改project.json文件,需要在 project.json 加入 runtimes 節點 注釋掉 "type": "platform"。
?
{
? "version": "1.0.0-*",
? "buildOptions": {
??? "debugType": "portable",
??? "emitEntryPoint": true
? },
? "dependencies": {"hwapp":"1.0.0"},
? "frameworks": {
??? "netcoreapp1.0": {
????? "dependencies": {
??????? "Microsoft.NETCore.App": {
????????? "version": "1.0.0"
??????? }
????? },
????? "imports": "dnxcore50"
???? }
??? },
?? "runtimes":{
????? "win7-x64": { },
????? "win7-x86": { },
????? "osx.10.10-x64": { },
????? "osx.10.11-x64": { },
????? "ubuntu.14.04-x64":{ },
????? "centos.7-x64":{}
?? }
}?
首先我們要dotnet restore,這里我還原的時候有些久,大家耐心等待一下,因為我們設置4個平臺。
dotnet publish -r centos.7-x64
?這個生成部署文件的操作是可以跨平臺的,在Windows上通過?dotnet publish -r centos.7-x64?命令生成Linux的部署文件,然后將整個部署文件夾上傳到Linux服務器。
?
dotnet test
測試命令用來運行測試項目,使用配置的測試運行程序中定義的測試套件。你會了解更多有關此命令在本教程的后面的章節里了解更詳細的內容。?
下次我們將深入了解一下到 project.json 文件,并開始嘗試在如何構建更復雜的應用程序與新的.Net Core。
相關文章:
ASP.NET Core 1.0 入門——了解一個空項目
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡介
云服務器下ASP.NET Core 1.0環境搭建(包含mono與coreclr)
使用VS Code開發ASP.NET Core 應用程序
dotnet run是如何啟動asp.net core站點的
ASP.NET Core提供模塊化Middleware組件
“dotnet restore"和"dotnet run"都做了些什么?
探秘 dotnet run 如何運行 .NET Core 應用程序
.NET Portability Analyzer 已開源
ASP.NET Core的配置(1):讀取配置信息
ASP.NET Core的配置(2):配置模型詳解
.NET Core 1.0 RC2 歷險之旅
使用VS Code開發 調試.NET Core 應用程序
讓我們Core在一起:ASP.NET Core & .NET Core
.NET Core VS Code 環境配置
官方博客明確了 .NET Core RC2/RTM 時間表
.NET Core全新的配置管理[共9篇]
利用記事本創建一個ASP.NET Core RC2 MVC應用
微軟.NET 正式劈腿成功,橫跨所有平臺
.NET Core 1.0 CentOS7 嘗試
解讀發布:.NET Core RC2 and .NET Core SDK Preview 1
[.NET Core].NET Core R2安裝及示例教程
ASP.NET Core 開發-中間件(Middleware)
結合Jexus + Kestrel 部署 asp.net core 生產環境
通過Jexus 部署 dotnetcore版本MusicStore 示例程序
ASP.NET Core 中文文檔 第一章 入門
用 Visual Studio Code 在 macOS 上創建首個 ASP.NET Core 應用程序
用 Visual Studio 和 ASP.NET Core MVC 創建首個 Web API
用 Visual Studio 發布一個 Azure 云 Web 應用程序
ASP.NET Core MVC 與 Visual Studio 入門
第二章指南(4.2)添加 Controller
DotNet Core 介紹
asp.net core 中間件詳解及項目實戰
教你實踐ASP.NET Core Authorization(免看文檔教程)
asp.net core 使用 Redis 和 Protobuf 進行 Session 緩存
asp.net core 中間件詳解及項目實戰
第二章 指南(4.3)添加 View
dotnet core開發體驗之開始MVC
dotnet core 開發體驗之Routing
聊聊ASP.NET Core默認提供的這個跨平臺的服務器——KestrelServer
簡析.NET Core 以及與 .NET Framework的關系
.NET Core 使用Dapper 操作MySQL
使用 CommandLineApplication 類創建專業的控制臺程序
簡析 .NET Core 構成體系
.NET Core也可以使用MongoDB了
.NET Core & ASP.NET Core 1.0在Redhat峰會上正式發布
.NET Core:面向未來的開源跨平臺開發技術
微軟說它深愛著Linux,現在它用行動證明了
移植.NET Core計劃,整合各平臺變得更簡單了!
ASP.NET Core 介紹
通過幾個Hello World感受.NET Core全新的開發體驗
ASP.NET Core 運行原理剖析1:初始化WebApp模版并運行
原文地址:http://www.cnblogs.com/shanyou/p/5636920.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
贊賞
人贊賞
總結
以上是生活随笔為你收集整理的.NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红帽、微软和 Codenvy 联合推出语
- 下一篇: 学习ASP.NET Core,你必须了解