適用於 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 執行階段型別重疊的型別。
封裝作業系統功能的型別和成員 (例如 System.Diagnostics.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 執行階段命名空間
轉換現有的 .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 回應的 System.Net.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 方法 |
如需詳細資訊,請參閱 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 方法 |
|
System.ICloneable 介面 |
傳回適當型別的自訂方法 |
System.Array.AsReadOnly 和 System.Collections.Generic.List<T>.AsReadOnly 方法 |
System.Collections.ObjectModel.ReadOnlyCollection<T> 類別的新執行個體,建立方法如下:
|
轉換型別的擴充方法
在大多數情況下,您都能使用 .NET Framework 型別搭配 Windows 執行階段型別來開發 Windows 市集應用程式,無須任何特殊考量或轉換。不過,在少數情況下,.NET Framework 也提供擴充方法,簡化 .NET Framework 型別和 Windows 執行階段型別之間的互動。這些擴充方法位於下列類別中:
System.IO.WindowsRuntimeStreamExtensions – 在 Managed 資料流和 Windows 執行階段的資料流之間進行轉換。
System.IO.WindowsRuntimeStorageExtensions – 開啟 Windows 執行階段檔案和資料夾做為 Managed 資料流。
System.Runtime.InteropServices.WindowsRuntime.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 執行階段元件