C#已更新為更快的速度。主要版本7.0是
2017年3月發布,次要版本7.1和7.2很快發布
在2017年8月和2017年12月。通過項目設置,您可以
與每個應用程序一起分發,是開源的,不可用
僅適用於Windows的桌面版本,但也適用於許多不同的版本
Windows設備,以及Linux和OS X.
對於創建Web應用程序,ASP.NET Core 1.0是完整的
重寫ASP.NET。此版本並非完全落后
與舊版本兼容,需要對現有版本進行一些更改
ASP.NET MVC代碼(使用ASP.NET Core MVC)。但是,它也有一個
與舊版本相比有很多優點,比如a
每個網絡請求的開銷都較低 - 這會帶來更好的效果
性能 - 它也可以在Linux上運行。 ASP.NET Web窗體是
不是此版本的一部分,因為ASP.NET Web窗體未設計
為了最好的表現;它是專為開發人員友好而設計的
關於Windows Forms應用程序開發人員已知的模式。
當然,並非所有應用程序都可以輕松更改以便使用
.NET核心。這就是為什么龐大的框架得到改善的原因
即使這些改進沒有以盡快的速度完成
作為.NET核心。完整.NET Framework的新版本是4.6。
完整的.NET提供了ASP.NET Web窗體的小更新
堆。
68
注意
模式匹配和元組在第13章中介紹,
“使用C#進行功能編程。”
.NET Core 2.0專注於使現有的更容易
使用.NET Framework編寫的應用程序到.NET Core。類型
.NET Core尚未提供但仍在使用的
現在有許多.NET Framework應用程序和庫
使用.NET Core。 .NET已添加了20,000多個API
核心2.0。例如,二進制序列化和DataSet又回來了,
你也可以在Linux上使用這些功能。另一個特點就是
幫助將遺留應用程序帶入.NET Core是Windows
兼容包(Microsoft.Windows.Compatibility)。這個NuGet
package定義了WCF,注冊表訪問,加密,目錄的API
服務,繪圖等。看到
https://github.com/dotnet/designs/blob/master/accepted/compatpack/
compat-pack.md表示當前狀態。
.NET標准是一個定義應該是哪些API的規范
可在任何支持該標准的平台上使用。越高了
標准版本,可用的API越多。 .NET Standard 2.0
將標准擴展了20,000多個API,並得到了支持
.NET Framework 4.6.1,.NET Core 2.0和通用Windows
平台(Windows應用程序)以build 16299開頭(Fall Creators
更新Windows 10)。
注意
選擇要使用的編譯器版本。
C#7引入了許多新功能(這些功能在本文中列出
簡介。)這些功能中最重要的來自
函數式編程:模式匹配和元組。
69
.NET標准將在第19章“庫”中詳細介紹
程序集,軟件包和NuGet。“
要檢查您的應用程序是否可以輕松移植到.NET Core,
您可以使用.NET可移植性分析器。您可以安裝此工具
Visual Studio的擴展。它分析你的二進制文件。您可以
配置哪些版本的可移植性信息
您想要獲得的框架,您可以選擇可移植性
有關.NET Core,.NET Framework,.NET Standard,Mono的信息,
Silverlight,Windows,Xamarin等。結果可以是JSON,
HTML和Excel。
圖1-1顯示了選擇.NET后的摘要報告
與.NET Framework 100%兼容的框架二進制文件,
.NET Core為96.67%,Windows應用程序為69.7%。圖1-
圖2顯示了有問題的API的詳細信息。
選擇技術並繼續前進
當你知道競爭技術的原因時
框架,選擇用於編程的技術更容易
應用。 例如,如果您正在創建新的Windows
在Windows Forms上下注並不是一個好主意。 代替,
您應該使用基於XAML的技術,例如Universal
Windows平台(UWP)。 當然,還有很好的理由
使用其他技術。 您需要支持Windows 7客戶端嗎? 在
在這種情況下,UWP不是一個選項,但WPF是。 你仍然可以創建你的
WPF應用程序的方式可以輕松切換到其他應用程序
技術,如UWP和Xamarin。
如果您正在創建Web應用程序,可以安全地使用ASP.NET Core
使用ASP.NET Core MVC。使用ASP.NET排除此選擇
Web表單。如果您正在訪問數據庫,則應使用實體
Framework Core,您應該選擇Managed Extensibility
框架而不是System.AddIn。
舊版應用程序仍使用Windows窗體和ASP.NET Web
表格和其他一些舊技術。它沒有意義
改變現有應用程序只是為了使用新技術。必有
做出改變是一個巨大的優勢 - 例如,什么時候
維護代碼已經是一場噩夢和大量的重構
需要更改為更快的發布周期
客戶,或使用新技術時允許減少
編碼更新時間。根據遺留應用程序的類型,
切換到新技術可能不值得。您可以
允許應用程序仍然基於舊技術,因為
仍然支持Windows窗體和ASP.NET Web窗體
選擇技術並繼續前進
當你知道競爭技術的原因時
框架,選擇用於編程的技術更容易
應用。例如,如果您正在創建新的Windows
在Windows Forms上下注並不是一個好主意。代替,
您應該使用基於XAML的技術,例如Universal
Windows平台(UWP)。當然,還有很好的理由
使用其他技術。您需要支持Windows 7客戶端嗎?在
在這種情況下,UWP不是一個選項,但WPF是。你仍然可以創建你的
WPF應用程序的方式可以輕松切換到其他應用程序
技術,如UWP和Xamarin。
71
未來很多年。
本書的內容基於較新的技術展示
什么是創建新應用程序的最佳選擇。如果你仍然需要
維護舊版應用程序,您可以參考舊版本
本書,涵蓋ASP.NET Web窗體,WCF,Windows窗體,
System.AddIn,Workflow Foundation和其他傳統技術
它仍然是.NET Framework的一部分,可用於.NET Framework。
.NET術語
目前的.NET技術是什么? 圖1-3給出了總體情況
.NET Framework,.NET Core和Mono如何關聯的圖片
彼此。 所有.NET Framework應用程序,.NET Core應用程序和Xamarin
如果應用程序是使用.NET構建的,則可以使用相同的庫
標准。 這些技術共享相同的編譯器平台,
編程語言和運行時組件。 他們不分享
相同的運行時,但它們確實在運行時共享組件。
例如,實時使用(JIT)編譯器RyuJIT
.NET Framework和.NET Core。
使用.NET Framework,您可以創建Windows窗體,WPF和
在Windows上運行的舊版ASP.NET應用程序。
使用.NET Core,您可以創建ASP.NET Core和控制台應用程序
在不同的平台上運行。 Universal也使用.NET Core
Windows平台(UWP),但這不會使UWP可用
Linux操作系統。 UWP還使用了Windows運行時,即
僅適用於Windows。
Xamarin提供Xamarin.IoS和Xamarin.Android,庫
使您能夠為iPhone和Android開發C#應用程序。同
Xamarin.Forms,你有一個庫來共享它們之間的用戶界面
兩個移動平台。 Xamarin目前仍以此為基礎
Mono框架,由Xamarin開發的.NET變體。在某些
一點,這可能會改為.NET Core。但是,重要的是
所有這些技術都可以使用為其創建的相同庫
.NET標准。
在圖1-3的下半部分,您可以看到還有一些共享
在.NET Framework,.NET Core和Mono之間進行。運行
組件,例如垃圾收集器和RyuJIT的代碼
(這是一個新的JIT編譯器,用於將IL代碼編譯為本機代碼)
共享。垃圾收集器由CLR,CoreCLR和.NET使用
本土。 CLR和使用RyuJIT即時編譯器
CoreCLR。 .NET編譯器平台(也稱為Roslyn)和
所有這些平台都使用編程語言。
.NET Framework
.NET Framework 4.7已經是.NET Framework
在過去的15年中不斷增強。 許多技術
在歷史部分討論過的是基於此
框架。 此框架用於創建Windows窗體和
WPF應用程序。 .NET Framework 4.7仍然提供增強功能
Windows窗體,例如支持高DPI。
如果要繼續使用ASP.NET Web窗體,ASP.NET
4.7使用.NET Framework 4.7是可行的方法。 否則,你需要
注意
為了使用.NET Core開發應用程序,Microsoft創建了新的
名為.NET Core Command line(CLI)的命令行實用程序。
重寫一些代碼以轉移到.NET Core。 視質量而定
源代碼和需要添加新功能,重寫代碼
可能是值得的。
.NETCore
.NET Core是所有新技術和新技術使用的新.NET
在本書中有一個重點。這個框架是開源的 - 你可以
在http://www.github.com/dotnet上找到它。運行時是CoreCLR
庫;框架包含集合類,文件系統
訪問,控制台,XML以及更多內容位於CoreFX存儲庫中。
與.NET Framework不同,它是您需要的特定版本
必須使用.NET Core 1.0在系統上安裝該應用程序
包含運行時的框架隨之提供
應用。以前有時候你可能有過
將ASP.NET Web應用程序部署到共享服務器的問題
因為提供程序安裝了舊版本的.NET;那些時候
消失了。現在,您可以使用應用程序提供運行時
不依賴於服務器上安裝的版本。
.NET Core采用模塊化方法設計。框架分裂
到大量的NuGet包列表。這樣你就不必處理了
使用所有包,使用元數據包引用
較小的包一起工作。 Metapackages甚至有所改善
使用.NET Core 2.0和ASP.NET Core 2.0。使用ASP.NET Core 2.0,
你只需要引用Microsoft.AspNetCore.All來獲取所有內容
ASP.NET Core Web應用程序通常需要的包。
.NET Core可以快速更新。甚至更新運行時
不影響現有的應用程序,因為運行時可以
與應用程序一起安裝。現在微軟可以改進.NET Core,
包括運行時,更快的發布周期。
請閱讀第19章中有關.NET標准的詳細信息。
NuGet包
在早期,組件是具有應用程序的可重用單元。
當使用時,這種使用仍然是可能的(並且對某些組件是必要的)
您正在添加對程序集的引用以使用公共類型和
你自己的代碼中的方法。但是,使用庫可能意味着很多
不只是添加引用並使用它。使用庫也可以
表示某些配置更改或可用於執行的腳本
一些功能的優點。這是打包的原因之一
NuGet包中的程序集。
NuGet包是一個包含程序集(或多個)的zip文件
程序集)以及配置信息和PowerShell
腳本。
使用NuGet包的另一個原因是可以找到它們
容易;它們不僅可以從微軟獲得,也可以從第三方獲得
派對。可以在NuGet服務器上輕松訪問NuGet包
http://www.nuget.org。
從Visual Studio項目中的引用,您可以打開
NuGet包管理器(參見圖1-4)。在那里你可以搜索
打包並將它們添加到應用程序中。這個工具使您能夠
搜索尚未發布的包(包括預發布
選項)並定義包應該在的NuGet服務器
搜索。搜索包的一個地方是您自己的共享
放置內部使用的包的目錄。
注意
當您使用NuGet服務器中的第三方軟件包時,您就是
如果包裹以后可用,則始終存在風險。 你還需要
檢查包的支持可用性。 經常檢查
用於項目鏈接以及使用前有關包的信息
它。 使用包源,您可以選擇Microsoft和.NET
只獲得Microsoft支持的軟件包。 第三方包
也包括在Microsoft和.NET部分中,但它們都是
Microsoft支持的第三方軟件包。
注意
有關NuGet包管理器的更多信息,請參閱
在第17章“Visual Studio 2015”中。
命名空間
.NET提供的類組織在名稱空間中
名稱以系統開頭。 為了讓您了解層次結構,
下表描述了一些命名空間。
System.Collections | 這是集合的根命名空間。 |
System.Data | 這是訪問數據庫的命名空間。 |
System.Diagnostics | 這是診斷的根命名空間 |
System.Globalization | 這是包含類的命名空間 |
System.IO | 這是File IO的命名空間,它們是 |
System.Net | 這是核心網絡的命名空間, |
System.Threading | 這是線程和的根命名空間 |
注意
許多新的.NET類使用以。開頭的命名空間
將Microsoft命名為System而不是System
實體框架核心的Microsoft.EntityFrameworkCore
和新的Microsoft.Extensions.DependencyInjection
依賴注入框架。
Common Language Runtime
公共語言運行時
通用Windows平台使用Native .NET進行編譯
使用AOT編譯器將IL轉換為本機代碼。這就像Xamarin.iOS。
對於所有其他方案,兩個應用程序都使用.NET
使用.NET Core 1.0的框架和應用程序,一個Common
需要語言運行時(CLR)。 .NET Core使用CoreCLR
而.NET Framework使用CLR。所以,做了什么
CLR?
在CLR執行應用程序之前,任何源代碼
你需要編譯(用C#或其他語言編寫)。
編譯在.NET中分兩步進行:
1.源代碼匯編到Microsoft中間語言
(IL)
2. CLR將IL編譯為特定於平台的本機代碼
IL代碼在.NET程序集中可用。在運行時,a
Just-In-Time(JIT)編譯器編譯IL代碼並創建
特定於平台的本機代碼。
新的CLR和CoreCLR包含名為的JIT編譯器
RyuJIT。新的JIT編譯器不僅比以前更快
一;它還可以更好地支持編輯和繼續功能
使用Visual Studio進行調試。 “編輯並繼續”功能啟用
您可以在調試時編輯代碼,然后繼續調試
會話無需停止並重新啟動進程。
運行時還包括一個帶有類型加載器的類型系統
負責從程序集加載類型。安全架構
用類型系統驗證某些類型的系統結構
是允許的 - 例如,繼承。
創建類型實例后,實例也需要
破壞和記憶需要回收。另一個特點
runtime是垃圾收集器。垃圾收集器清理干凈
來自托管堆的內存不再被引用。
運行時還負責線程化。創建托管
來自C#的線程不一定是來自底層的線程
操作系統。線程由虛擬化和管理
運行。
注意
如何從C#創建和管理線程
第21章,“任務和並行編程”,以及第1章
22,“任務同步。”第17章,“管理和
非托管內存,“提供有關垃圾的信息
收集器以及如何清理內存。
Windows運行時
從Windows 8開始,Windows操作系統提供
另一個框架:Windows運行時。此運行時使用
Windows Universal Platform和Windows 8的版本1,
Windows 8.1版本2和Windows 10版本3。
與.NET Framework不同,此框架是使用本機創建的
碼。當它與.NET應用程序一起使用時,包含的類型和方法
看起來像.NET。借助語言投影,Windows
運行時可以與JavaScript,C ++和.NET語言一起使用,
看起來它是編程環境的原生。方法
在案例敏感性方面不僅表現不同;該
方法和類型也可以根據具體位置而有不同的名稱
他們被使用。
Windows運行時提供了一個組織的對象層次結構
以Windows開頭的命名空間。看看這些課程,有
.NET類型的重復功能並不是很多;相反,額外的
提供的功能可用於在其上運行的應用程序
通用Windows平台。
NAMESPACE DESCRIPTION
Windows.ApplicationModel This namespace and its subnamespaces,
such as
Windows.ApplicationModel.Contracts,
define classes to manage the app lifecycle
and communication with other apps.
80
Windows.Data Windows.Data defines subnamespaces to
work with Text, JSON, PDF, and XML
data.
Windows.Devices Geolocation, smartcards, point of service
devices, printers, scanners, and other
devices can be accessed with
subnamespaces of Windows.Devices.
Windows.Foundation Windows.Foundation defines core
functionality. Interfaces for collections are
defined with the namespace
Windows.Foundation.Collections. You will
not find concrete collection classes here.
Instead, interfaces of .NET collection types
map to the Windows Runtime types.
Windows.Media Windows.Media is the root namespace for
playing and capturing video and audio,
accessing playlists, and doing speech
output.
Windows.Networking This is the root namespace for socket
programming, background transfer of
data, and push notifications.
Windows.Security Classes from
Windows.Security.Credentials offer a safe
store for passwords;
Windows.Security.Credentials.UI offers a
picker to get credentials from the user.
Windows.Services.Maps This namespace contains classes for
location services and routing.
Windows.Storage With Windows.Storage and its
subnamespaces, it is possible to access
files and directories as well as use streams
and compression.
Windows.System The Windows.System namespace and its
subnamespaces give information about the
system and the user, but they also offer a
81
Launcher to launch other apps.
Windows.UI.Xaml In this namespace, you can find a ton of
types for the user interface.
設置環境
如果您安裝了安裝了最新更新的Visual Studio 2017,
您可以立即從CLI工具開始。如從前那樣
提到,您可以在沒有Visual Studio 2017的情況下設置系統。您
也可以在Linux和OS X上使用大部分樣本。要下載
應用程序適用於您的環境,只需訪問https://dot.net和
單擊“開始”按鈕。從那里,您可以下載.NET
適用於Windows,Linux和macOS的SDK。
對於Windows,您可以下載安裝SDK的可執行文件。
使用Linux,您需要選擇Linux發行版才能獲得
相應的命令:
使用Red Hat和CentOS,使用yum安裝.NET SDK。
使用Ubuntu和Debian,使用apt-get。
使用Fedora,使用dnf install。
使用SLES / openSUSE,使用zipper安裝。
要在Mac上安裝.NET SDK,您可以下載.pkg文件。
使用Windows,不同版本的.NET Core運行時以及
NuGet包安裝在用戶配置文件中。在你工作的時候
在.NET中,此文件夾的大小會增加。隨着時間的推移,您創建多個
項目,NuGet包不再存儲在項目本身;
它們存儲在此特定於用戶的文件夾中。這具有以下優點:
你不需要為每個不同的下載NuGet包
項目。 下載了這個NuGet軟件包后,它就在您的軟件包上
系統。 就像不同版本的NuGet包以及
運行時可用,所有不同的版本都存儲在此中
夾。 有時檢查此文件夾可能會很有趣
並刪除不再需要的舊版本。
安裝.NET Core CLI工具,您可以使用dotnet工具作為條目
指出要啟動所有這些工具。 剛開始
> dotnet --help
查看可用的dotnet工具的所有不同選項。 很多
選項有簡寫符號。 如需幫助,您可以輸入
> dotnet --h
創建應用程序
dotnet工具提供了一種創建“Hello World!”的簡便方法。
應用。 只需輸入以下命令:
> dotnet新控制台 - 輸出HelloWorld
此命令創建一個新的HelloWorld目錄並添加源
代碼文件Program.cs和項目文件HelloWorld.csproj。 開始
使用.NET Core 2.0,此命令還包括一個dotnet還原
下載所有NuGet包的地方。 要查看列表
您可以使用應用程序使用的依賴項和庫版本
檢查obj子目錄中的文件project.assets.json。沒有
使用選項--output(或-o作為速記),文件將是
在當前目錄中生成。
生成的源代碼類似於以下代碼段(代碼
文件HelloWorld / Program.cs):
using System; namespace HelloWorld { class Program {static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
自20世紀70年代以來,Brian Kernighan和Dennis Ritchie撰寫了這篇文章
預訂C編程語言,這是一個傳統
使用“Hello World!”應用程序學習編程語言。
使用.NET Core CLI,將自動生成此程序。
讓我們進入這個程序的語法。 Main方法是條目
指向.NET應用程序。 CLR調用靜態Main方法
啟動。 Main方法需要放入一個類中。這里,班級是
命名程序,但您可以通過任何名稱來調用它。
Console.WriteLine調用Console類的WriteLine方法。
您可以在System命名空間中找到Console類。你沒有
需要編寫System.Console.WriteLine來調用此方法;該
打開系統命名空間,使用上面的using聲明
源文件。
編寫源代碼后,需要編譯代碼才能運行它。
創建的項目配置文件名為HelloWorld.csproj。
與舊的csproj文件相比,新的項目文件減少了一些
具有多個默認值的行:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> </Project>
使用項目文件,OutputType定義輸出的類型。
使用控制台應用程序,這是Exe。 TargetFramework指定
框架和用於構建應用程序的版本。
使用示例項目,應用程序使用.NET Core 2.0構建。
您可以將此元素更改為TargetFrameworks並指定多個元素
框架,例如netcoreapp2.0; net47,用於構建應用程序
for .NET Framework 4.7和.NET Core 2.0(項目文件
84
的HelloWorld/ HelloWorld.csproj):
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFrameworks>netcoreapp2.0;net47</TargetFrameworks> </PropertyGroup> </Project>
Sdk屬性指定項目使用的SDK。
Microsoft提供了兩個主要的SDK:用於控制台的Microsoft.NET.Sdk
用於ASP.NET Core Web的應用程序和Microsoft.NET.Sdk.Web
應用。
您不需要將源文件添加到項目中。 帶有.cs的文件
同一目錄和子目錄中的擴展名是自動的
添加了編譯。 擴展名為.resx的資源文件是
自動添加以嵌入資源。 你可以改變
默認行為和顯式排除/包含文件。
您也不需要添加.NET Core包。 通過指定
目標框架netcoreapp2.0,元數據包
引用許多其他包的Microsoft.NetCore.App是
自動包含。
構建應用程序
要構建應用程序,需要將當前目錄更改為
應用程序的目錄並啟動dotnet構建。 當你
編譯.NET Core 2.0和.NET Framework 4.7,你會看到輸出
如下:
> dotnet build Microsoft (R) Build Engine version 15.5.179.9764 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. Restore completed in 19.8 ms for C:\procsharp\Intro\HelloWorld\HelloWorld.csproj. HelloWorld -> C:\procsharp\Intro\HelloWorld\bin\Debug\net47\HelloWorld.exe HelloWorld -> 85 C:\procsharp\Intro\HelloWorld\bin\Debug\netcoreapp2.0\HelloWorld.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:01.58
注意
命令dotnet new和dotnet build現在包括
恢復NuGet包。 您還可以顯式恢復NuGet
使用dotnet還原的軟件包。
由於編譯過程,您會發現包含的程序集
程序類的IL代碼
bin / debug / [netcoreapp2.0 | net47]文件夾。 如果你比較的構建
使用.NET 4.7的.NET Core,您將找到包含IL代碼的DLL
使用.NET Core,以及包含.NET 4.7的IL代碼的EXE。
為.NET Core生成的程序集依賴於
System.Console程序集,而.NET 4.6程序集找到
mscorlib程序集中的控制台類。
要構建發布代碼,您需要指定選項--Configuration
發布(簡寫-c發布):
> dotnet build --configuration Release
以下章節中的一些代碼示例可以使用
C#7.1或C#7.2提供的功能。 默認情況下,最新的主要
使用編譯器的版本,即C#7.0。 要啟用更新
在C#的版本中,您需要在項目文件中指定它,如圖所示
使用以下項目文件部分。 在這里,最新版本
配置了C#編譯器。
<PropertyGroup> <LangVersion>latest</LangVersion> </PropertyGroup>
運行應用程序
要運行該應用程序,可以使用dotnet run命令
> dotnet run
如果項目文件針對多個框架,您需要告訴
dotnet run命令用於運行應用程序的框架
使用選項--framework。 必須配置此框架
csproj文件。 使用示例應用程序,您可以看到類似的輸出
恢復信息后的以下內容:
> dotnet run ––framework netcooreapp2.0
Microsoft (R) Build Engine version 15.5.179.9764 for .NET
Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 20.65 ms for
C:\procsharp\Intro\HelloWorld\HelloWorld.csproj.
Hello World!
在生產系統上,您不使用dotnet run來運行
應用。 相反,您使用dotnet與庫的名稱:
> dotnet bin/debug/netcoreapp2.0/HelloWorld.dll
您還可以創建可執行文件,但可執行文件是平台
具體。 如何完成此操作將在本章的后面部分中顯示
“打包和發布應用程序。”
注意
正如您所見,構建並運行“Hello World!”應用程序
Windows,dotnet工具在Linux和OS X上的工作方式相同。你
可以在任一平台上使用相同的dotnet命令。
正如Visual Studio 2017所提供的,本書的重點是Windows
一個比可用的更強大的開發平台
其他平台,但本書中的許多代碼示例都是基於的
在.NET Core上,您將能夠在其他平台上運行它們
運行應用程序
要運行該應用程序,可以使用dotnet run命令
同樣。 您還可以使用Visual Studio Code,這是一個免費的開發
環境,直接在Linux和OS X上開發應用程序。
有關詳細信息,請參閱本章后面的“開發人員工具”部分
有關Visual Studio的不同版本的信息。
正如您所見,構建並運行“Hello World!”應用程序
Windows,dotnet工具在Linux和OS X上的工作方式相同。你
可以在任一平台上使用相同的dotnet命令。
正如Visual Studio 2017所提供的,本書的重點是Windows
一個比可用的更強大的開發平台
其他平台,但本書中的許多代碼示例都是基於的
在.NET Core上,您將能夠在其他平台上運行它們
運行應用程序
要運行該應用程序,可以使用dotnet run命令
同樣。 您還可以使用Visual Studio Code,這是一個免費的開發
環境,直接在Linux和OS X上開發應用程序。
有關詳細信息,請參閱本章后面的“開發人員工具”部分
有關Visual Studio的不同版本的信息。