方法: ソフトウェア開発キットを作成する
ソフトウェア開発キット (SDK) は Visual Studio が一つの参照の項目として処理するファイルのコレクションです。[参照マネージャー] のダイアログ ボックスは [参照マネージャー] のダイアログ ボックスを起動するプロジェクトに関連するすべての SDK を示します。SDK をプロジェクトに追加すると、すべてのコンテンツは、IntelliSense、[ツールボックス]、デザイナー、オブジェクト ブラウザー、ビルド、配置、デバッグとパッケージで使用できます。
SDK の 2 種類があります:
プラットフォーム SDK には、プラットフォームの apps の開発に必要なコンポーネントです。Windows ストア の apps を開発する際にたとえば、Windows 8 SDK が必要です。
拡張子は、プラットフォーム SDK を拡張するが、そのプラットフォーム用の apps のために必須ではありません。省略可能な要素。
以下のセクションでは、SDK の一般的なインフラストラクチャをプラットフォーム SDK と拡張子 SDK を作成する方法について説明します。
ターゲット プラットフォームのモニカー
プラットフォーム SDK
拡張機能の SDK
ターゲット プラットフォームのモニカー
Visual Studio 2012 は 2 個の新しいプロパティをサポートしています:
ターゲット プラットフォームの識別子 (TPI): このプロパティの有効値は、ソフトウェアを開発できるさまざまなプラットフォームで構成されます。Windows プラットフォームはの例です。
ターゲット プラットフォームのバージョン (TPV): このプロパティは、ターゲット プラットフォームのバージョンを指定します。たとえば、Windows 8の場合、TPV は 8.0 で、TPI は Windows です。
また、これら二つのプロパティはインフラストラクチャを参照する Windows 8 および SDK の基礎を形成するターゲット プラットフォームのモニカー (TPM) を形成します。たとえば、Windows 8 の TPM は "Windows"、version=8.0 です。
プラットフォーム SDK
プラットフォーム SDK には、プラットフォームの apps を開発するために必要です。Windows 8の apps を開発する際にたとえば、Windows 8 SDK が必要です。
インストール
すべてのプラットフォーム SDK は HKLM\Software\Microsoft\Microsoft SDKs\[TPI]\v[TPV]\@InstallationFolder = [SDK のルート] にインストールされます。したがって、Windows 8 SDK は HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0 にインストールされます。
[レイアウト]
プラットフォーム SDK に次のレイアウトがあります:
\[InstallationFolder root]
SDKManifest.xml
\References
\[config]
\[arch]
\DesignTime
\[config]
\[arch]
ノード |
説明 |
---|---|
参照フォルダー |
コードできる API を含む binary が含まれます。これらは Windows のメタデータの (WinMD) ファイルまたはアセンブリを含めることができます。 |
DesignTime フォルダー |
前の実行/デバッグ時にのみ必要なファイルが含まれています。これらには、XML ドキュメント、ライブラリ、ヘッダー、ツールボックスのデザイン時 binary、MSBuild のアーティファクトを含めることができます。
注意
XML ドキュメントは\DesignTime フォルダーに、理想的に、設定しましたが、参照の XML ドキュメントは Visual Studio 2012に参照ファイルとともに設定され続けます。たとえば、\References\[config]\[arch]\sample.dll 参照の XML ドキュメントは \References\[config]\[arch]\sample.xml になり、そのドキュメントのローカライズ バージョンは \References\[config]\[arch]\[locale]\sample.xml になります。
|
構成のフォルダー |
3 個のフォルダーは一つだけです: リテール バージョンとデバッグ、CommonConfiguration。SDK の作成者は CommonConfiguration の下に SDK のコンシューマーが対象とする構成に関係なく、SDK のファイルの同じセットを実行すると、ファイルを設定できます。 |
アーキテクチャのフォルダー |
サポートされるアーキテクチャのフォルダー持つことができます。Visual Studio 2012 は、次のアーキテクチャをサポートしています: x86、x64、および ARM ニュートラル。メモ: x86 への Win32 マップ、ニュートラルへの AnyCPU マップ。 .NET Framework 4.5では、MSBuild は、プラットフォーム SDK を\CommonConfiguration\neutral でのみ表示するには、ハードコーディングされています。 |
[SDKManifest.xml] |
このファイルは、Visual Studio SDK がを実装する方法を説明します。Windows 8を SDK のマニフェストを参照します:
DisplayNameオブジェクト ブラウザーが参照の一覧の表示値。
PlatformIdentityこの属性の存在は、SDK は、プラットフォーム SDK であり、そこから追加された参照はローカルにコピーしないよう Visual Studio および MSBuild を示します。
TargetFrameworkVisual Studio は、この属性がこの属性の値で指定された同じフレームワークを対象とするプロジェクトだけ SDK を実行できるようにするために使用されます。
MinVSVersionVisual Studio は、この属性を要素に適用する SDK のみ実行するために使用されます。
Referenceこの属性は、コントロールを含み、それらの参照の場合に指定する必要があります。参照がコントロールを含めるかどうかを指定する方法については、" "を参照してください。
|
Visual Studio
参照マネージャーはターゲット プラットフォーム モニカー (TPM) を見て、HKLM\Software\Microsoft\Microsoft SDKs\[TPI]\v[TPV]\@InstallFolder = [SDK ルート] のプロパティ値を置換し、プラットフォーム SDK のディスク位置を発見するようにします。参照マネージャーは、:
プラットフォーム SDK が適用される参照マネージャーが呼び出されたかどうか、および、プラットフォーム SDK には、参照マネージャーを起動するプロジェクトの対象とするフレームワークで適用されているバージョンの Visual Studio であるかどうかを判断する SDK のマニフェストを開きます。プラットフォーム SDK の両方の計算に適用される場合は、参照マネージャーは、プラットフォーム SDK を参照する列挙するには、タブ名のターゲット プラットフォームの識別子のプロパティを使用します。プラットフォーム SDK がディスク上にない場合、タブは引き続き表示されますが、メッセージ "[TPI] SDK がコンピューターに見つけることを" 中央のペインに示します。
[InstallFolder のルート]\references\CommonConfiguration\neutral フォルダーの下に指定したのすべての参照を列挙し、[TPI] | コアのタブを取得します。
ユーザーがプロジェクトにアセンブリまたは WinMD ように、プラットフォーム SDK の参照を追加し、コードの実行できます。
拡張機能の SDK
拡張子は、プラットフォーム SDK を拡張しますが、そのプラットフォームのアプリケーション開発のために必須ではありません。たとえば、Bing Maps および Windows Live SDK は Windows 8 ウィンドウを拡張しますが、そのオペレーティング システムのすべての開発者が不要になります。
インストール
拡張機能の SDK には、4 の位置に 1 が設定できます:
\Program Files\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs
\Users\[username]\AppData\Local\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs
dir1 と dir2 がディスク上の任意の 2 種類の位置を識別する <PropertyGroup><SDKReferenceDirectoryRoot>dir1;dir2</SDKReferenceDirectoryRoot></PropertyGroup> としてプロジェクト ファイル
HKLM\Software\Microsoft\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs\[SDKName]\[SDKVersion]\@default = [SDK root] where [SDK root] is [Path to SDK]\[SDKName]\[SDKVersion]\
最初の 3 種類の位置の場合、レジストリ キーは必要ではありません。は、コンピューター全体、ユーザー固有またはカスタム位置の拡張機能の SDK を削除することもできます。は Visual Studio SDK を受け取ります。これらの機構にも適していない場合、4 番目の位置でレジストリ パスを使用して、SDK のカスタムの場所を指定できます。
[レイアウト]
拡張機能の SDK に次のレイアウトがあります:
\[ExtensionSDKs root]
\[SDKName]
\[SDKVersion]
SDKManifest.xml
\References
\[config]
\[arch]
\Redist
\[config]
\[arch]
\DesignTime
\[config]
\[arch]
ノード |
説明 |
---|---|
\[SDKName]\[SDKVersion] |
拡張機能の SDK の ID を形成します。つまり、拡張機能の SDK の名前とバージョンはパスの対応するフォルダーの名前から SDK のルートに取得されます。MSBuild はディスク SDK を検索するには、この ID を使用し、Visual Studio は [プロパティ] のウィンドウと参照マネージャーでこの ID を表示します。 |
参照フォルダー |
binary コードからできる API を含む構成されます。これらは Windows のメタデータの (WinMD) ファイルまたはアセンブリであることができます。 |
Redist フォルダー |
ファイルから実行時/デバッグに必要なユーザー、アプリケーションの一部として包まれて取得する必要があります。構成されます。2 種類の規則が適用されます:
|
DesignTime フォルダー |
ファイルから必要な前の実行/デバッグ時のみ、ユーザー アプリケーションの一部としてパッケージ化するのではなく構成されます。これらには、XML ドキュメント、ライブラリ、ヘッダー、ツールボックスのデザイン時 binary、MSBuild のアーティファクトであることができます。
注意
ネイティブ プロジェクトで使用するために用意されている、SDK が SDKName.props ファイルが必要です。次のコードは、この種類のファイルの例を示します。
メモ
XML ドキュメントは\DesignTime フォルダーに、理想的に、設定しましたが、参照の XML ドキュメントは Visual Studio 2012に参照ファイルとともに設定され続けます。たとえば、\References\[config]\[arch]\sample.dll 参照の XML ドキュメントは \References\[config]\[arch]\sample.xml になり、そのドキュメントのローカライズ バージョンは \References\[config]\[arch]\[locale]\sample.xml になります。
|
構成のフォルダー |
3 個のフォルダーは一つだけです: リテール バージョンとデバッグ、CommonConfiguration。SDK の作成者は CommonConfiguration の下に SDK のコンシューマーが対象とする構成に関係なく、SDK のファイルのセットが実行されると、ファイルを設定できます。 |
アーキテクチャのフォルダー |
サポートされるアーキテクチャのフォルダー持つことができます。Visual Studio 2012 は、次のアーキテクチャをサポートしています: x86、x64、ニュートラル ARM。x86 への Win32 マップ、ニュートラルへの AnyCPU マップ。 |
[SDKManifest.xml] |
このファイルは、Visual Studio SDK がを実装する方法を説明します。次のサンプル SDK のマニフェストを参照してください。
ノード説明
DisplayNameVisual Studio のユーザー インターフェイスに関するマネージャー、ソリューション エクスプローラー、オブジェクト ブラウザーなどの位置に表示される値。
ProductFamilyName全体的な SDK の製品名。たとえば、Windows Library for JavaScript (WinJS) SDK は" SDK の製品ファミリで同じファミリに属する "" および " "Microsoft.WinJS.1.0 Microsoft.WinJS.2.0 名前を持つ SDK を Microsoft.WinJS" 付属しています。この属性は、Visual Studio および MSBuild がそのつながりを設定するようにします。この属性が存在しない場合は、SDK の名前は、グループ名として使用されます。
FrameworkIdentityWindows コンポーネント ライブラリにのみ適用されます。この属性の値は、実行アプリケーションのマニフェストに一つ以上の Windows コンポーネント ライブラリの依存関係を示すようになります。
TargetFrameworkどの SDK が参照マネージャーおよびツールボックスで使用できるかの値。これにより、ターゲット フレームワーク モニカーのセミコロン区切りのリストです。同じターゲット フレームワークの複数のバージョンを指定すると、参照マネージャーは目的をフィルター処理するための最も低いバージョン指定を使用します。たとえば、".NET Framework、version=v2.0; .NET Framework は"、version=v4.0、参照マネージャー使用して ""、.NET Framework version=v2.0 を指定します。特定のターゲット フレームワーク プロファイルを指定した場合は、そのプロファイルのみが目的をフィルター処理するには参照マネージャーによって使用されます。たとえば、"Silverlight、version=v4.0 の profile=WindowsPhone" を指定すると、参照マネージャーは Windows Phone のプロファイルのみでフィルター処理; プロジェクトは、完全な Silverlight 4.0 フレームワークが表示されませんが参照マネージャー SDK を対象にする。
MinVSVersionフィルター処理に使用する SDK は Visual Studio の各バージョンに含める。
AppliesTo
どの SDK が適用される、Visual Studio のプロジェクトの種類を指定することにより、参照マネージャーで使用できるかの値。Visual Studio 2012では、9 の値を確認し: WindowsAppContainer、VisualC、VB、CSharp、WindowsXAML、JavaScript、マネージ コードとネイティブ。SDK の作成者は and ("+")、or ("|")、not ("!") 演算子を利用して、SDK に適用するプロジェクトの種類の範囲を正確に指定できます。
メモ
WindowsAppContainer は Windows ストア の apps のプロジェクトを識別します。
SupportPrefer32Bitサポートされている値は "true" または "false" です。値が "true" に設定されている場合、結果は属性が設定されていない場合と同じです。; つまり、既定のの解釈が Prefer32Bit がサポートされていることです。値が "false" に設定されている場合、MSBuild は参照に SDK Prefer32Bit が存在するプロジェクトが有効な場合 Windows ストア のプロジェクトのエラー返します (またはデスクトップのプロジェクトの警告が適用されます。Prefer32Bit に関する詳細については、使用するプログラミング言語に応じて、次のトピック" 1 "を、参照:
SupportedArchitecturesSDK がサポートするアーキテクチャをセミコロンで区切ったリスト。MSBuild のは、プロジェクトの対象 SDK のアーキテクチャがサポートされる警告を表示します。この属性を指定しない場合、MSBuild は、この型の警告を表示します。
SupportsMultipleVersionsこの属性が [エラー] か [警告] に設定されている場合、MSBuild は同じプロジェクトが同じ SDK のファミリの複数のバージョンを参照できないことを示します。この属性が [許可] にない場合に設定されていない場合、MSBuild はエラーまたは警告のこの型を表示します。
AppXWindows コンポーネント ライブラリにのみ適用されます。この属性はディスクに Windows のコンポーネント ライブラリに対してアプリケーションのパッケージのパスを指定し、パスは、ローカル デバッグ中に Windows のコンポーネント ライブラリの登録のコンポーネントに渡されます。ファイル名の名前付け規則は [プロバイダー].[Product].[アーキテクチャ].[構成].[バージョン].appx。Windows コンポーネントのライブラリに適用する構成とアーキテクチャは、属性名、および属性値ではオプションです。
CopyRedistToSubDirectorySDK の作成者は\redist フォルダーの下のファイルがアプリケーションのパッケージのルート (つまり、App パッケージの作成ウィザードで選択された [パッケージの場所]) とランタイムのレイアウトのルートを基準とする場所にコピーされるかを確認できます。既定の場所は、アプリケーションのパッケージ化と F5 レイアウトのルートです。
DependsOnこの SDK が依存する SDK を定義する SDK の ID の区切りのリスト。この属性は、参照マネージャーの詳細ペインに表示されます。
MoreInfoガイダンスを SDK のコンシューマーに提供する Web ページの URL が含まれています。この値は、参照マネージャーの右ペインの詳細についてリンクで使用されます。
ファイル参照この属性は、コントロールを含めるか、レジスタの型を指定する必要があるネイティブ WinMD であること、それらのアセンブリと WinMD の参照だけを指定する必要があります。
登録の型この属性は、アプリケーション マニフェストの WinMD のレジスタを指定し、同等の実装の DLL があるネイティブ WinMD に必要です。
[ツールボックス]
次の表は、サポートされている属性を示します。
ツールボックスの配置SDKManifest.xml の例 (すべての参照– WinMD または DLL に適用できる)
すべてのコントロールを列挙し、ツールボックスの既定のカテゴリに設定します。
すべてのコントロールを列挙し、特定のカテゴリ名の下に配置します。
特定のコントロールを列挙し、特定のカテゴリ名の下に配置します。
特定のコントロールを列挙し、さまざまなカテゴリ名の下に Expression Blend と Visual Studio に設定します。
Expression Blend と Visual Studio の特定のコントロールに異なる列挙します。
特定のコントロールを列挙し、Visual Studio の共通パスの下またはすべてのコントロール グループにのみ設定します。
特定のコントロールを列挙し、ChooseItems のツールボックスにある .vsz なしで特定のセットのみを表示します。
|
Visual Studio
参照マネージャーはターゲット プラットフォームの (TPM) モニカーを表示し、次に拡張機能の SDK のディスク上の位置を検出する \Program Files\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs、\Users\[username]\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs と HKLM\Software\Microsoft\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs\ のプロパティ値を\ExtensionSDKs\代入します。
参照マネージャーは、拡張子の SDK には、対象とするフレームワークによって適用される参照マネージャーを起動したかどうか、およびの AppliesTo 属性の値は、参照マネージャーを起動したプロジェクト システムが提供した機能に一致するプロジェクトであるかどうか、拡張子の SDK を参照マネージャーが開始された Visual Studio のバージョンに適用されるかどうかを確認するには、拡張子の SDK SDK のマニフェストを開きます。拡張機能の SDK がすべての計算に適用される場合は、参照マネージャーは、DisplayName、バージョン、および SDK の依存関係を表示し、次に拡張機能の SDK のマニフェストによって詳細についてリンクに正しく設定します。
拡張機能マネージャー SDK は参照の一つのエントリとして表示されます。追加、JavaScript を使用して、Windows 用にビルドされたマネージ apps と Windows ストア の apps の [ソリューション エクスプローラー] の単一ノードとして表示されます。SDK は、Visual C++ プロジェクトのプロパティ ページの単一エントリとして表示されます。ユーザーは、それ以上の処理を行う必要はありません。ユーザーは、IntelliSense、ツールボックス、デザイナー、オブジェクト ブラウザー、ビルド、配置、およびデバッグ パッケージ用に設定されます。
[!メモ]
プロジェクトに基づいて構成を対象とし、アーキテクチャは、Visual Studio 低いものから特定への参照が選択されます。たとえば、を対象とする SDK がデバッグ構成であり、対象の SDK のアーキテクチャが x86 の場合、Visual Studio は\references\commonconfiguration\neutral、\references\commonconfiguration\x86、\references\debug\neutral、finally の\references\debug\x86 で始まるすべての参照を、列挙します。次に、あまり特定の複製するを削除し、IntelliSense のコンパイラへのすべての参照を渡します。盗品の参照のこの方法は、SDK の作成者にいない複数の\configuration\architecture フォルダーの下の参照を複製する必要の柔軟性が得られます。
プロジェクトが別の SDK に依存する SDK を参照する場合、Visual Studio は自動的に 2 番目の SDK は実行されません。ユーザーが手動で 2 番目の SDK への参照を追加する必要があります。SDK が拡張機能のタブで指定されている場合に、ユーザーが SDK の依存関係、参照マネージャー]ダイアログ ボックスで推論できるようにするには、詳細ペインで、SDK の名前、バージョン、および (SDK が別の SDK に依存している場合) SDK の依存関係の名前を示します。SDK の依存関係が満たされない場合に、ユーザーに依存関係を追加するように要求する警告を返します。
FrameworkIdentity: Visual Studio は FrameworkIdentity- [設定] -次に[包括 FrameworkIdentity-]、および[設定]、および[包括 FrameworkIdentity-]、および FrameworkIdentity を最初に表示されます。これは一致を見つけると、一致の属性の値を記録します。
AppX: SDK リゾルバーは、アーキテクチャごとの AppX の特定の属性を選択することを試みます; 降順に: AppX-[設定]-[包括] (またはニュートラルの場合は AppX-[設定])、および AppX-[包括]、そして最終的には AppX。たとえば、SDK のマニフェストが AppX の次の属性を指定した場合: AppX "x86"、"AppX デバッグ x86"、"AppX x64"、""、"AppX ARM AppX ITA" および "" AppX、およびプロジェクトは、対象のデバッグと x86、SDK リゾルバーの選択 AppX デバッグ "x86"、"AppX x64"、""、"AppX ARM AppX ITA" および "" AppX いません。
SDK を参照するプロジェクト テンプレートでは、SDK の参照を次の方法で指定する必要があります:
<ItemGroup> <SDKReference Include="MySDK, Version=1.0"> <Name>My SDK</Name> </SDKReference> </ItemGroup>