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 ランタイム 型と重なる型。

  • オペレーティング システム機能をラップする型とメンバー (System.Diagnostics.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 サブセットに含まれている名前空間と型の一覧については、「Windows ストア アプリ用 .NET - サポートされる API」を参照してください。

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

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

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

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

  • .NET Framework 名前空間と 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.110).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.110).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.110).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.110).gifネットワークの変更

以前の型

新しい型

System.Net.WebClient クラス

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

または

大量のデータのアップロードとダウンロードのための Windows.Networking.BackgroundTransfer 名前空間の型

System.Net.Sockets 名前空間の型

Windows.Networking.Sockets 名前空間の型

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

絶対 URI

詳細については、「Windows ランタイムへの URI の引き渡し」を参照してください。

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

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

BR230302.collapse_all(ja-jp,VS.110).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.110).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 ライブラリの「Windows ストア アプリのための .NET Framework のリフレクション」を参照してください。

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

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

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

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

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

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

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

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

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

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

以前の型

新しい型

System.Xml.XmlConvert.ToDateTime メソッド

XmlConvert.ToDateTimeOffset メソッド

System.ICloneable インターフェイス

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

System.Array.AsReadOnly メソッドと System.Collections.Generic.List<T>.AsReadOnly メソッド

次のように作成される、System.Collections.ObjectModel.ReadOnlyCollection<T> クラスの新しいインスタンス

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

参照

概念

Windows ストア アプリ用 .NET - サポートされる API

C++ および Visual Basic での Windows ランタイム コンポーネントの作成

その他の技術情報

Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート