<p><b>.NET標準</b>（英語：<span lang="en">.NET Standard</span>），原稱為<b>.NET平台標準</b>（英語：<span lang="en">.NET Platform Standard</span>）是微軟為跨平台所規劃的.NET Framework相關平台於系統之間的相依性標準，在此標準之下，能確保標準的應用程式介面與物件能夠跨平台使用<span id="noteTag-cite_ref-sup"></span>。.NET平台標準是以參考組件的方式存在<span id="noteTag-cite_ref-sup"></span>，其本身並沒有任何實作，真正的實作是由平台擁有者所進行<span id="noteTag-cite_ref-sup"></span>，而使用者端使用簡單的NuGet版本戳記即可獲得正確的平台版本<span id="noteTag-cite_ref-sup"></span>。
</p>


<h2><span id=".E6.AD.B7.E5.8F.B2"></span><span id="歷史">歷史</span></h2>
<p>.NET Framework長期以來一直是微軟視窗平台上的特色與標準，它也成功的實作跨微軟視窗平台的應用程式介面，但最為人詬病的一點是它無法跨出微軟視窗平台，雖然有Mono這樣的Framework可跨平台，但是Mono畢竟不是官方實作，在.NET相容性上也無法達到百分之百相容，而在微軟以.NET Core與ASP.NET Core投入真正跨平台的架構與框架開發時，勢必要面臨這個問題。
</p><p>.NET平台標準的基礎是.NET Framework上的可攜式類別庫<span id="noteTag-cite_ref-sup"></span>，但為它賦與了更標準的作法以及更容易識別的版本戳記。
</p><p>.NET平台標準的原理如下所示：
</p>
<ul><li>平台擁有者自詳細的.NET平台標準版本中實作參考組件。</li>
<li>平台擁有者可能會自詳細的.NET平台標準版本實作參考組件的子集<span id="noteTag-cite_ref-sup"></span>。</li>
<li>任何.NET平台標準參考組件中的API表層變更都會影響版本。</li>
<li>低版本的組件總是會相容於高版本。</li></ul><h2><span id=".E9.81.8B.E4.BD.9C.E6.96.B9.E5.BC.8F"></span><span id="運作方式">運作方式</span></h2>
<p>.NET平台標準由微軟提供參考組件，目前的參考組件置於微軟的CoreFX儲存庫，每一個定義的命名空間與類別都有一個ref資料夾，裡面即是預設的實作碼，所有參與.NET平台標準的實作者都必須要實作這些屬性與方法，才能相容於.NET平台標準，而CoreFX也有提供實作碼，供實作的參考之用，在大多數的情況，各平台的差異性並不高。
</p><p>當函式庫已實作成.NET平台標準相容的函式庫後，使用者端就可以使用目標平台別稱（<span lang="en">Target Platform Moniker</span>，<span lang="en">TPM</span>）來加入其參考，其命名規則是portable-a+b+c+d+...，portable表示它是可攜式的類別庫，a, b, c, d則是要支援的平台別：</p>
<h2><span id=".E7.89.88.E6.9C.AC"></span><span id="版本">版本</span></h2>
<p>.NET平台標準使用netstandard來代表一個平台的標準，使用者端直接使用netstandard來獲取平台的功能，目前各平台對應的.NET平台標準有：
</p>
<p>.NET平台標準的版本戳記為netstandardx.y，其中x表示主版號y表示副版號，例如netstandard10 = .NET Standard 1.0、netstandard1.5 = .NET Standard 1.5。
</p>
<h2><span id=".E5.B0.8D.E6.87.89.E6.96.BC.E5.8F.AF.E6.94.9C.E5.BC.8F.E7.9A.84.E7.89.88.E6.9C.AC"></span><span id="對應於可攜式的版本">對應於可攜式的版本</span></h2>
<p>.NET平台標準對應到之前的可攜式類別庫的版本戳記，若使用者端需要特別針對特定的平台版本進行對應時，可以使用import的功能匯入（這是供.NET Core應用程式的功能）。
</p>
<p>針對Mono以及Xamarin等平台，平台標準的起始為1.4（版本戳記為netstandard1.4）</p>
<h2><span id=".E6.94.AF.E6.8F.B4.E5.B7.A5.E5.85.B7"></span><span id="支援工具">支援工具</span></h2>
<p>目前可使用netstandard版本別稱的平台僅有.NET Core以及ASP.NET Core，但未來會擴及其他工具。
</p><p>下列工具為預定支援 netstadard 版本別稱的工具：
</p>
<ul><li>Visual Studio 2022</li></ul><ul><li>Visual Studio 2019</li></ul><ul><li>Visual Studio 2017（版本 15.3 或更高版本）</li></ul><ul><li>Visual Studio 2015（必須加入NuGet擴充套件）。</li>
<li>Visual Studio 2013（必須加入NuGet擴充套件）。</li>
<li>Visual Studio 2012（必須加入NuGet擴充套件）。</li>
<li>NuGet CLI（指令列介面） 3.x</li>
<li>NuGet CLI 2.x</li>
<li>.NET CLI</li>
<li>Xamarin Studio</li></ul><h2><span id=".E6.B3.A8.E9.87.8B"></span><span id="注釋">注釋</span></h2>

<h2><span id=".E5.8F.83.E8.80.83.E8.B3.87.E6.96.99"></span><span id="參考資料">參考資料</span></h2>

<h2><span id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"></span><span id="外部链接">外部連結</span></h2>
<ul><li>.NET Platform Standard（頁面存檔備份，存於網際網路檔案館）</li></ul>
<!-- 
NewPP limit report
Parsed by mw2416
Cached time: 20230505225851
Cache expiry: 1814400
Reduced expiry: false
Complications: [show‐toc]
CPU time usage: 0.872 seconds
Real time usage: 1.078 seconds
Preprocessor visited node count: 6556/1000000
Post‐expand include size: 617443/2097152 bytes
Template argument size: 6701/2097152 bytes
Highest expansion depth: 25/100
Expensive parser function count: 129/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 12473/5000000 bytes
Lua time usage: 0.364/10.000 seconds
Lua memory usage: 20377862/52428800 bytes
Number of Wikibase entities loaded: 0/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00%  690.503      1 -total
 35.04%  241.952      2 Template:NavboxV2
 26.83%  185.234     95 Template:Le
 24.77%  171.045      1 Template:Microsoft
 16.52%  114.064      6 Template:Lang-en
 13.71%   94.701      2 Template:Navbox
 11.44%   79.023      1 Template:Reflist
 11.37%   78.482      1 Template:Microsoft_APIs
 11.35%   78.390      1 Template:視窗元件
 10.16%   70.142      1 Template:NoteTA
-->
**.NET 標準**（英語：.NET Standard），原稱為**.NET 平台標準**（英語：.NET Platform Standard）是微軟為跨平台所規劃的.NET Framework 相關平台於系統之間的相依性標準，在此標準之下，能確保標準的應用程式介面與物件能夠跨平台使用。.NET 平台標準是以參考組件的方式存在，其本身並沒有任何實作，真正的實作是由平台擁有者所進行，而使用者端使用簡單的 NuGet 版本戳記即可獲得正確的平台版本。

## 歷史

.NET Framework 長期以來一直是微軟視窗平台上的特色與標準，它也成功的實作跨微軟視窗平台的應用程式介面，但最為人詬病的一點是它無法跨出微軟視窗平台，雖然有 Mono 這樣的 Framework 可跨平台，但是 Mono 畢竟不是官方實作，在.NET 相容性上也無法達到百分之百相容，而在微軟以.NET Core 與 ASP.NET Core 投入真正跨平台的架構與框架開發時，勢必要面臨這個問題。

.NET 平台標準的基礎是.NET Framework 上的可攜式類別庫，但為它賦與了更標準的作法以及更容易識別的版本戳記。

.NET 平台標準的原理如下所示：

* 平台擁有者自詳細的.NET 平台標準版本中實作參考組件。
* 平台擁有者可能會自詳細的.NET 平台標準版本實作參考組件的子集。
* 任何.NET 平台標準參考組件中的 API 表層變更都會影響版本。
* 低版本的組件總是會相容於高版本。

## 運作方式

.NET 平台標準由微軟提供參考組件，目前的參考組件置於微軟的 CoreFX 儲存庫，每一個定義的命名空間與類別都有一個 ref 資料夾，裡面即是預設的實作碼，所有參與.NET 平台標準的實作者都必須要實作這些屬性與方法，才能相容於.NET 平台標準，而 CoreFX 也有提供實作碼，供實作的參考之用，在大多數的情況，各平台的差異性並不高。

當函式庫已實作成.NET 平台標準相容的函式庫後，使用者端就可以使用目標平台別稱（Target Platform Moniker，TPM）來加入其參考，其命名規則是 portable-a+b+c+d+...，portable 表示它是可攜式的類別庫，a, b, c, d 則是要支援的平台別：

## 版本

.NET 平台標準使用 netstandard 來代表一個平台的標準，使用者端直接使用 netstandard 來獲取平台的功能，目前各平台對應的.NET 平台標準有：

.NET 平台標準的版本戳記為 netstandardx.y，其中 x 表示主版號 y 表示副版號，例如 netstandard10 = .NET Standard 1.0、netstandard1.5 = .NET Standard 1.5。

## 對應於可攜式的版本

.NET 平台標準對應到之前的可攜式類別庫的版本戳記，若使用者端需要特別針對特定的平台版本進行對應時，可以使用 import 的功能匯入（這是供.NET Core 應用程式的功能）。

針對 Mono 以及 Xamarin 等平台，平台標準的起始為 1.4（版本戳記為 netstandard1.4）

## 支援工具

目前可使用 netstandard 版本別稱的平台僅有.NET Core 以及 ASP.NET Core，但未來會擴及其他工具。

下列工具為預定支援 netstadard 版本別稱的工具：

* Visual Studio 2022
* Visual Studio 2019
* Visual Studio 2017（版本 15.3 或更高版本）
* Visual Studio 2015（必須加入 NuGet 擴充套件）。
* Visual Studio 2013（必須加入 NuGet 擴充套件）。
* Visual Studio 2012（必須加入 NuGet 擴充套件）。
* NuGet CLI（指令列介面） 3.x
* NuGet CLI 2.x
* .NET CLI
* Xamarin Studio

## 注釋

## 參考資料

## 外部連結

* .NET Platform Standard（頁面存檔備份，存於網際網路檔案館）
.NET平台標準