適用於 Windows 市集應用程式的 .NET 概觀
.NET Framework 提供 Managed 類型子集,可讓您在 C# 或 Visual Basic 中用來建立 Windows 市集應用程式。這個 Managed 類型子集稱為 適用於 Windows 市集應用程式的 .NET,.NET Framework 開發人員可以在熟悉的程式設計架構中用來建立 Windows 市集應用程式。這個子集不包含任何與開發 Windows 市集應用程式不相關的類型。
您可以使用這些 Managed 類型搭配 Windows 執行階段 應用程式開發介面的類型,來建立 Windows 市集應用程式。一般來說,Managed 類型的用法和 Windows 執行階段類型幾乎相同,除了 Managed 類型位於 System 開頭的命名空間中,而 Windows 執行階段類型位於 Windows 開頭的命名空間中。適用於 Windows 市集應用程式的 .NET 和 Windows 執行階段一同使用,可以提供以 C# 或 Visual Basic 開發 Windows 市集應用程式時的完整類型和成員集合。
Managed 類型和成員子集的設計目的,很明確是以 Windows 市集應用程式開發為主。因此,它省略下列項目:
不適用於開發 Windows 市集應用程式的類型和成員 (例如主控台和 ASP.NET 類型)。
過時和舊版類型。
與 Windows 執行階段類型重疊的類型。
封裝作業系統功能的類型和成員 (例如 EventLog 和效能計數器)。
會造成混淆的成員 (例如 I/O 類型上的 Close 方法)。
某些情況下,您在 .NET Framework 傳統型應用程式中使用的類型,不存在於 適用於 Windows 市集應用程式的 .NET 中。您可以改為使用 Windows 執行階段的類型。例如適用於 Windows 市集應用程式的 .NET 不包含 System.IO.IsolatedStorage.IsolatedStorageSettings 類別,但 Windows.Storage.ApplicationDataContainer 類別可以提供類似於儲存應用程式設定的行為。轉換現有的 .NET Framework 程式碼章節提供您必須進行的一般變更之範例。
當您使用 C# 或 Visual Basic 建立 Windows 市集應用程式時,您的專案會自動參考整組 適用於 Windows 市集應用程式的 .NET 組件。因此,您可以在專案中使用 適用於 Windows 市集應用程式的 .NET 支援的任何一個類型,而不需要任何額外的動作。如需 適用於 Windows 市集應用程式的 .NET 和 Windows 執行階段提供的合併命名空間清單 (依功能區域分組),請參閱 .NET Framework 和 Windows 執行階段命名空間章節。
如需 .NET Framework 子集包含的命名空間和類型清單,請參閱 適用於 Windows 市集應用程式的 .NET 應用程式開發介面。
您也可以建立可攜式類別庫專案來開發 .NET Framework 程式庫,再從 Windows 市集應用程式使用這些 .NET Framework 程式庫。專案必須包含 [適用於 Windows 市集應用程式的 .NET] 做為其中一個目標平台。當您想要開發可從各種不同平台的應用程式 (例如 Windows Phone 應用程式、傳統型應用程式和 Windows 市集應用程式) 使用的類別時,可攜式類別庫就會很有用。請參閱可攜式類別庫的跨平台開發.
本主題包含下列章節:
轉換現有的 .NET Framework 程式碼
轉換類型的擴充方法
.NET Framework 和 Windows 執行階段命名空間
這些主題提供如何將應用程式其他部分轉換成 Windows 執行階段的相關資訊:
轉換現有的 .NET Framework 程式碼
通常不是單純將現有的 .NET Framework 應用程式直接轉換為 Windows 市集應用程式,而是必須重新設計符合新使用者經驗的 .NET Framework 應用程式。不過,您可以轉換現有 .NET Framework 應用程式的一部分,在新的 Windows 市集應用程式中使用。當您轉換現有的 .NET Framework 程式碼時,請注意必須在 Windows 市集應用程式中進行下列變更:
UI 變更
I/O 變更
儲存變更
網路變更
執行緒變更
反映變更
安全性變更
資源變更
例外狀況變更
WCF 變更
一般 .NET Framework 類型中的變更
UI 變更
轉換 Silverlight 架構應用程式或 Windows Phone 應用程式的 UI 程式碼時,您可以使用多個相同的 UI 類型,但是這些類型現在位於 Windows.UI.Xaml 命名空間中,而不是 System.Windows 命名空間中。這些新的 UI 類型類似於舊版 .NET Framework UI 類型,但包含一些不同的成員。
取代 |
為 |
---|---|
System.Windows.* 命名空間中的 UI 類型 |
Windows.UI.Xaml.* 命名空間中的 UI 類型 (例如 Border 類別位於 Windows.UI.Xaml.Controls 命名空間中) |
如需移植 UI 程式碼的詳細資訊,請參閱將 Windows Phone 7 應用程式移植到 XAML。
I/O 變更
I/O 類型包含新成員,可以支援非同步程式設計模型的新 await 關鍵字。
儲存變更
原本使用 System.IO.IsolatedStorage 類別,改為使用 Windows.Storage 命名空間中的類型來儲存本機資料和檔案。
取代 |
為 |
---|---|
System.IO.IsolatedStorage.IsolatedStorageFile 類別 |
Windows.Storage.ApplicationData 類別的 LocalFolder 屬性
|
System.IO.IsolatedStorage.IsolatedStorageSettings 類別 |
Windows.Storage.ApplicationData 類別的 LocalSettings 屬性
|
如需詳細資訊,請參閱應用程式資料。
網路變更
取代 |
為 |
---|---|
System.Net.WebClient 類別 |
傳送 HTTP 要求和接收 HTTP 回應的 HttpClient 類別 -或- Windows.Networking.BackgroundTransfer 命名空間中的類型,可用於上傳或下載大量的資料 |
System.Net.Sockets 命名空間中的類型 |
Windows.Networking.Sockets 命名空間中的類型 |
相對 URI (傳遞至 Windows 執行階段類型) |
絕對 URI 如需詳細資訊,請參閱傳遞 URI 給 Windows 執行階段. |
攔截 UriFormatException 例外狀況的例外狀況處理程式碼 |
攔截 FormatException 例外狀況的程式碼,此為 UriFormatException 的父類別 |
執行緒變更
某些 .NET Framework 執行緒成員已變更,而有些類型現在可用於 Windows 執行階段 應用程式開發介面。
取代 |
為 |
---|---|
System.Threading.Thread.MemoryBarrier 方法 |
System.Threading 命名空間中的 Interlocked.MemoryBarrier 方法 |
System.Threading.Thread.ManagedThreadId 屬性 |
System 命名空間中的 Environment.CurrentManagedThreadId 屬性 |
System.Threading.Thread.CurrentCulture 屬性 |
System.Globalization 命名空間中的 CultureInfo.CurrentCulture 屬性 |
System.Threading.Thread.CurrentUICulture 屬性 |
System.Globalization 命名空間中的 CultureInfo.CurrentUICulture 屬性 |
System.Threading.Timer 類別 |
|
System.Threading.ThreadPool 類別 |
|
將工作加入集區佇列的程式碼 |
|
將工作加入集區佇列並等候完成的程式碼 |
|
建立長時間執行工作項目的程式碼 |
|
反映變更
System.Type 類別的大部分成員都已移至 System.Reflection.TypeInfo 類別。您可以透過呼叫 System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type) 方法來擷取 TypeInfo 物件,這是 Type 的擴充方法。
取代 |
為 |
---|---|
type.Assembly |
type.GetTypeInfo().Assembly |
type.GetMethods(BindingFlags.DeclaredOnly) |
type.GetTypeInfo().DeclaredMethods |
type.GetMethod("MethodName", BindingFlags.DeclaredOnly) |
type.GetTypeInfo().GetDeclaredMethod("MethodName") |
type.GetNestedTypes() |
type.GetTypeInfo().DeclaredNestedTypes |
System.Delegate.CreateDelegate 方法 |
MethodInfo.CreateDelegate 方法 |
如需詳細資訊,請參閱 MSDN Library 中的 適用於 Windows 市集應用程式之 .NET Framework 中的反映。
安全性變更
許多安全性、驗證和密碼編譯作業的類型都可透過 Windows 執行階段類型使用。如需 Windows 市集應用程式可用之安全性命名空間的完整清單,請參閱本主題稍後的安全性命名空間清單。
資源變更
對於 Windows 市集應用程式,您將建立單一資源檔,而不是傳統型應用程式中使用的中樞和支點模型。除此之外,請使用 Windows.ApplicationModel.Resources 及 Windows.ApplicationModel.Resources.Core 命名空間中的資源類型,而不要使用 System.Resources 命名空間。
如需詳細資訊,請參閱建立和擷取 Windows 市集應用程式中的資源.
例外狀況變更
在某些情況下,Managed 類型會擲回 適用於 Windows 市集應用程式的 .NET 不包含的例外狀況。在這些情況下,您可以攔截不包含之例外狀況的父類別。例如,在傳統型應用程式中,您攔截 UriFormatException 例外狀況以處理無效 URI,但在 Windows 市集 應用程式中,您攔截 FormatException 例外狀況,因為 UriFormatException 不包含在 適用於 Windows 市集應用程式的 .NET 中。FormatException 是 UriFormatException 的父類別。
WCF 變更
在 Windows 市集應用程式中,您可以利用 Windows Communication Foundation (WCF) 用戶端功能來擷取 WCF 服務的資料,但您無法建立 WCF 服務來服務資料。
一般 .NET Framework 類型中的變更
取代 |
為 |
---|---|
System.Xml.XmlConvert.ToDateTime 方法 |
XmlConvert.ToDateTimeOffset 方法 |
System.ICloneable 介面 |
傳回適當類型的自訂方法 |
System.Array.AsReadOnly and System.Collections.Generic.List<T>.AsReadOnly 方法 |
ReadOnlyCollection 類別的新執行個體,建立方法如下:
|
轉換類型的擴充方法
在大多數情況下,您都能使用 .NET Framework 類型搭配 Windows 執行階段類型來開發 Windows 市集應用程式,無須任何特殊考量或轉換。不過,在少數情況下,.NET Framework 也提供擴充方法,簡化 .NET Framework 類型和 Windows 執行階段類型之間的互動。這些擴充方法位於下列類別中:
WindowsRuntimeStreamExtensions – 在 Managed 資料流和 Windows 執行階段的資料流之間進行轉換。
WindowsRuntimeStorageExtensions – 開啟 Windows 執行階段檔案和資料夾做為 Managed 資料流。
WindowsRuntimeBufferExtensions – IBuffer 的轉換。
.NET Framework 和 Windows 執行階段命名空間
下列各節列出 適用於 Windows 市集應用程式的 .NET 和 Windows 執行階段提供的命名空間清單,依功能分組。
集合
核心
資料和內容
裝置
診斷
檔案和資料夾
全球化
圖形
Managed Extensibility Framework (MEF)
若要安裝下列命名空間,請在 Visual Studio 2012 (含) 以後版本中開啟您的專案,選擇 [專案] 功能表中的 [管理 NuGet 封裝],並在線上搜尋 Microsoft.Composition 封裝。
媒體
網路
展示
列印
反映
資源
安全性
社交
執行緒處理
UI 自動化
使用者互動
語言和編譯器
請參閱
概念
適用於 Windows 市集應用程式的 .NET 應用程式開發介面
在 C++ 和 Visual Basic 中建立 Windows 執行階段元件