Windows ストア アプリ用 .NET の概要

.NET Framework には、C# または Visual Basic を使用した、Windows ストア アプリの作成に使用できるマネージ型のサブセットが用意されています。マネージ型のこのサブセットは Windows ストア アプリ用 .NET と呼ばれ、.NET Framework 開発者はこのサブセットを使用することで、一般的なプログラミング フレームワークで Windows ストア アプリを作成できます。Windows ストア アプリの開発に関係のない型は、このサブセットに含まれていません。

これらのマネージ型は、Windows ランタイム API の型と共に Windows ストア アプリの作成に使用します。マネージ型が System から始まる名前空間内に存在し、Windows ランタイム 型が Windows から始まる名前空間内に存在する点を除いて、通常、マネージ型の使用と Windows ランタイム 型の使用で違いに気付くことはありません。Windows ストア アプリ用 .NET と Windows ランタイム の両方を合わせて、C# または Visual Basic を使用した Windows ストア アプリの開発に使用できる型とメンバーの一式となります。

マネージ型とメンバーから成るこのサブセットは、Windows ストア アプリの開発に焦点を絞って設計されています。そのため、以下のものは除外されています。

  • Windows ストア アプリの開発に適用できない型とメンバー (console 型や ASP.NET 型など)。

  • 旧式の型と従来の型。

  • Windows ランタイム 型と重なる型。

  • オペレーティング システム機能をラップする型とメンバー (EventLog やパフォーマンス カウンターなど)。

  • 混同しやすいメンバー (I/O 型の Close メソッドなど)。

.NET Framework デスクトップ アプリで使用した型が Windows ストア アプリ用 .NET に存在しない場合もあります。このような場合、代わりに Windows ランタイム の型を使用できます。たとえば、System.IO.IsolatedStorage.IsolatedStorageSettings クラスは Windows ストア アプリ用 .NET に含まれませんが、Windows.Storage.ApplicationDataContainer クラスは、アプリケーション設定を格納する目的で同様の動作を提供します。必要となる可能性がある一般的な変更の例は、「Converting your existing .NET Framework code (既存の .NET Framework コードの変換)」セクションに挙げられています。

C# または Visual Basic を使用する Windows ストア アプリの作成時には、Windows ストア アプリ用 .NET のアセンブリ セット全体がプロジェクト内で自動的に参照されます。このため、付加的な処理をせずに、Windows ストア アプリ用 .NET でサポートされている型はどれでもプロジェクトで使用できます。Windows ストア アプリ用 .NET と Windows ランタイム で用意されている名前空間の組み合わせの一覧 (機能領域別にグループ化されたもの) については、「.NET Framework 名前空間と Windows ランタイム名前空間」セクションを参照してください。

.NET Framework サブセットに含まれている名前空間と型の一覧については、「.NET for Windows Store apps – supported APIs」を参照してください。

汎用性のあるクラス ライブラリ プロジェクトを作成し、Windows ストア アプリから使用できる .NET Framework ライブラリを開発することもできます。このプロジェクトには、対象プラットフォームの 1 つとして、Windows ストア アプリ用 .NET も含める必要があります。汎用性のあるクラス ライブラリ は、各種プラットフォーム (Windows Phone アプリ、デスクトップ アプリ、Windows ストア アプリなど) のアプリから使用できるクラスを開発する場合に特に便利です。以下を参照してください。Portable Class Libraries

このトピックでは、次の内容について説明します。

  • 既存の .NET Framework コードの変換

  • 型を変換する拡張メソッド

  • .NET Framework 名前空間と Windows ランタイム名前空間

次のトピックは、アプリのその他の部分を Windows ランタイムに変換することに関する情報を説明しています。

既存の .NET Framework コードの変換

一般に、既存の .NET Framework アプリを Windows ストア アプリに単純に変換することはありません。新たなユーザー体験を提供するために .NET Framework アプリを設計し直します。しかし、新しい Windows ストア アプリで使用できるように、既存の .NET Framework アプリの一部を変換することもできます。既存の .NET Framework コードを変換する場合は、必要に応じて Windows ストア アプリで次の変更を加える必要があることに注意してください。

  • UI の変更

  • I/O の変更

  • ストレージの変更

  • ネットワークの変更

  • スレッドの変更

  • リフレクションの変更

  • セキュリティの変更

  • リソースの変更

  • 例外の変更

  • WCF の変更

  • .NET Framework の一般的な型の変更

BR230302.collapse_all(ja-jp,VS.120).gifUI の変更

Silverlight ベースのアプリまたは Windows Phone アプリから UI コードを変換する場合は、多数の同じ UI 型を使用できますが、型は現在 System.Windows 名前空間ではなく Windows.UI.Xaml 名前空間に配置されています。これらの新しい UI 型は以前の .NET Framework UI 型に似ていますが、異なるメンバーがいくつか含まれています。

以前の型

新しい型

System.Windows.* 名前空間の UI 型

Windows.UI.Xaml.* 名前空間の UI 型

(たとえば、Border クラスは Windows.UI.Xaml.Controls 名前空間に配置されています)

UI コードの移植の詳細については、「Windows Phone 7 アプリから XAML に移行する」を参照してください。

BR230302.collapse_all(ja-jp,VS.120).gifI/O の変更

I/O 型には、非同期プログラミング モデルにおける新しい await キーワードをサポートするための新しいメンバーが含まれています。

以前の型

新しい型

System.IO.Stream.BeginRead メソッドと EndRead メソッド

System.IO.Stream.ReadAsync メソッド

例については、「ReadAsync(array<Byte[], Int32, Int32)」を参照してください。

System.IO.Stream.BeginWrite メソッドと EndWrite メソッド

System.IO.Stream.WriteAsync メソッド

例については、「WriteAsync(array<Byte[], Int32, Int32)」を参照してください。

I/O クラスの Close() メソッド

I/O クラスの Dispose() メソッド。

または

using (C#) または Using (Visual Basic) ステートメント内の I/O オブジェクトを宣言してインスタンス化することにより、そのオブジェクトを確実に破棄します。次に例を示します。

using (StreamReader sr = 
  new StreamReader(await passedFile.OpenStreamForReadAsync()))
{
    while ((nextLine = await sr.ReadLineAsync()) != null)
    {
        contents.Append(nextLine);
    }
}
Using sr As StreamReader = 
  New StreamReader(Await passedFile.OpenStreamForReadAsync())
    While (nextLine = Await sr.ReadLineAsync()) <> Nothing
        contents.Append(nextLine)
    End While
End Using

System.IO.File.ReadAllText メソッド

Windows.Storage.PathIO クラスの ReadTextAsync メソッド

ファイルを取得して開くコード

public static async void ReadFileSamples()
{
  // Read a file from package
  StorageFolder packageFolder = 
      ApplicationModel.Package.Current.InstalledLocation;
  StorageFile packagedFile = 
      await packageFolder.GetFileAsync("FileInPackage");

  // Read a file from AppData
  StorageFolder localFolder = ApplicationData.Current.LocalFolder;
  StorageFile localFile = 
    await localFolder.GetFileAsync("FileInAppData");
}
Public Async Shared Sub ReadFileSamples()
  ' Read a file from package
  Dim packageFolder As StorageFolder = 
      ApplicationModel.Package.Current.InstalledLocation
  Dim packagedFile As StorageFile = 
      Await packageFolder.GetFileAsync("FileInPackage")

  ' Read a file from AppData
  Dim localFolder As StorageFolder = ApplicationData.Current.LocalFolder
  Dim localFile As StorageFile = 
    Await localFolder.GetFileAsync("FileInAppData ")
End Sub

BR230302.collapse_all(ja-jp,VS.120).gifストレージの変更

System.IO.IsolatedStorage クラスを使用する代わりに、Windows.Storage 名前空間の型を使用してローカルのデータとファイルを保存します。

以前の型

新しい型

System.IO.IsolatedStorage.IsolatedStorageFile クラス

Windows.Storage.ApplicationData クラスの LocalFolder プロパティ

ApplicationData.Current.LocalFolder

System.IO.IsolatedStorage.IsolatedStorageSettings クラス

Windows.Storage.ApplicationData クラスの LocalSettings プロパティ

ApplicationData.Current.LocalSettings

詳細については、「アプリ データ」を参照してください。

BR230302.collapse_all(ja-jp,VS.120).gifネットワークの変更

以前の型

新しい型

System.Net.WebClient クラス

HTTP 要求の送信と HTTP 応答の受信を行う HttpClient クラス

または

大量のデータをアップロードまたはダウンロードする Windows.Networking.BackgroundTransfer 名前空間の型

System.Net.Sockets 名前空間の型

Windows.Networking.Sockets 名前空間の型

相対 URI (Windows ランタイム 型に渡される場合)

絶対 URI

詳細については、以下を参照してください。Passing a URI to the Windows Runtime

UriFormatException 例外をキャッチする例外処理コード

UriFormatException の親クラスである FormatException 例外をキャッチするコード

BR230302.collapse_all(ja-jp,VS.120).gifスレッドの変更

.NET Framework スレッド メンバーの一部が変更され、一部の型が現在 Windows ランタイム API で使用できます。

以前の型

新しい型

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 クラス

Windows.System.Threading.ThreadPoolTimer クラス

System.Threading.ThreadPool クラス

Windows.System.Threading.ThreadPool クラス

作業をプールのキューに配置するコード

Task.Run(() => 
{ 
  // work goes here
});
Task.Run(
    Sub()
        ' work goes here
    End Sub)

作業をプールのキューに配置し、完了を待機するコード

await Task.Run(() => 
{ 
  // work goes here
});
Await Task.Run(
    Sub()
        ' work goes here
    End Sub)

長時間実行される作業項目を作成するコード

Task.Factory.StartNew(() => 
{ 
  // work goes here
}, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(
    Sub()
        ' work goes here
    End Sub, TaskCreationOptions.LongRunning)

BR230302.collapse_all(ja-jp,VS.120).gifリフレクションの変更

System.Type クラスのほとんどのメンバーは、System.Reflection.TypeInfo クラスに移動しました。TypeInfo オブジェクトは、System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type) メソッド (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 ライブラリの「Reflection in the .NET Framework for Windows Store Apps」を参照してください。

BR230302.collapse_all(ja-jp,VS.120).gifセキュリティの変更

セキュリティ、認証、および暗号化の各操作の型の多くは、Windows ランタイム 型を介して使用できます。Windows ストア アプリに使用できるセキュリティ名前空間の完全な一覧については、このトピックで後述するセキュリティ名前空間の一覧を参照してください。

BR230302.collapse_all(ja-jp,VS.120).gifリソースの変更

Windows ストア アプリの場合、デスクトップ アプリで使用されるハブ アンド スポーク モデルではなく、単一のリソース ファイルを作成します。さらに、System.Resources 名前空間ではなく、Windows.ApplicationModel.Resources および Windows.ApplicationModel.Resources.Core 名前空間にあるリソースの種類を使用します。

詳細については、以下を参照してください。Windows ストア アプリでのリソースの作成と取得

BR230302.collapse_all(ja-jp,VS.120).gif例外の変更

Windows ストア アプリ用 .NET に含まれていない例外がマネージ型によってスローされることもあります。このような場合は、含まれていない例外の親クラスをキャッチできます。たとえば、デスクトップ アプリでは UriFormatException 例外をキャッチして無効な URI を処理しますが、Windows ストア アプリでは FormatException 例外をキャッチします。これは、UriFormatException が Windows ストア アプリ用 .NET に含まれていないためです。FormatException は UriFormatException の親クラスです。

BR230302.collapse_all(ja-jp,VS.120).gifWCF の変更

Windows ストア アプリでは、Windows Communication Foundation (WCF) クライアント機能を利用して WCF サービスからデータを取得できます。ただし、データを提供するために WCF サービスを作成することはできません。

BR230302.collapse_all(ja-jp,VS.120).gif.NET Framework の一般的な型の変更

以前の型

新しい型

System.Xml.XmlConvert.ToDateTime メソッド

XmlConvert.ToDateTimeOffset メソッド

System.ICloneable インターフェイス

適切な型を返すカスタム メソッド

System.Array.AsReadOnly および System.Collections.Generic.List<T>.AsReadOnly メソッド

次のように作成される、ReadOnlyCollection クラスの新しいインスタンス

new ReadOnlyCollection<string>(selectedList)
New ReadOnlyCollection(Of String)(selectedList)

型を変換する拡張メソッド

ほとんどの場合、特別な考慮や変換をせずに、.NET Framework 型と Windows ランタイム 型を一緒に使用して Windows ストア アプリを開発できます。ただし、.NET Framework 型と Windows ランタイム 型の相互作用をシンプルにするために、.NET Framework によって拡張メソッドが用意される場合もあります。これらの拡張メソッドは次のクラスのものです。

  • WindowsRuntimeStreamExtensions – マネージ ストリームと Windows ランタイム 内のストリーム間の変換用。

  • WindowsRuntimeStorageExtensions – Windows ランタイム ファイルおよびフォルダーをマネージ ストリームとして開くために使用される。

  • WindowsRuntimeBufferExtensions – IBuffer との間で変換するために使用される。

.NET Framework 名前空間と Windows ランタイム 名前空間

以下のセクションでは、Windows ストア アプリ用 .NET と Windows ランタイム に用意されている名前空間を機能別に示します。

BR230302.collapse_all(ja-jp,VS.120).gifコレクション

BR230302.collapse_all(ja-jp,VS.120).gifコア

BR230302.collapse_all(ja-jp,VS.120).gifデータとコンテンツ

BR230302.collapse_all(ja-jp,VS.120).gifデバイス

BR230302.collapse_all(ja-jp,VS.120).gif診断

BR230302.collapse_all(ja-jp,VS.120).gifファイルとフォルダー

BR230302.collapse_all(ja-jp,VS.120).gifグローバリゼーション

BR230302.collapse_all(ja-jp,VS.120).gifグラフィックス

BR230302.collapse_all(ja-jp,VS.120).gifMEF (Managed Extensibility Framework)

次の名前空間をインストールするには、Visual Studio 2012 以降でプロジェクトを開き、[プロジェクト] メニューの [Manage NuGet Packages] をクリックし、Microsoft.Composition パッケージをオンライン検索します。

BR230302.collapse_all(ja-jp,VS.120).gifメディア

BR230302.collapse_all(ja-jp,VS.120).gifネットワーク

BR230302.collapse_all(ja-jp,VS.120).gifプレゼンテーション

BR230302.collapse_all(ja-jp,VS.120).gif印刷

BR230302.collapse_all(ja-jp,VS.120).gifリフレクション

BR230302.collapse_all(ja-jp,VS.120).gifリソース

BR230302.collapse_all(ja-jp,VS.120).gifセキュリティ

BR230302.collapse_all(ja-jp,VS.120).gifソーシャル

BR230302.collapse_all(ja-jp,VS.120).gifスレッド

BR230302.collapse_all(ja-jp,VS.120).gifUI オートメーション

BR230302.collapse_all(ja-jp,VS.120).gifユーザー操作

BR230302.collapse_all(ja-jp,VS.120).gif言語およびコンパイラ

参照

その他の技術情報

.NET for Windows Store apps – supported APIs

Creating Windows Runtime Components for Javascript, in C# and Visual Basic

.NET Framework Support for Windows Store Apps and Windows Runtime