软件开发工具包 (SDK) 是 Visual Studio 视为唯一引用项目文件的集合。引用管理器 对话框的列表与项目相关的调用 引用管理器 对话框的所有 SDKs。当您添加一个 SDK 到项目时,所有目录通过 IntelliSense、工具箱、设计器、对象浏览器、生成、部署,调试和打包可用。
具有 SDKs 的两种类型:
平台 SDK 是开发的 apps 的强制的元素平台的。例如,需要 Windows 8 SDK 开发 Windows 应用商店 apps。
扩展 SDKs 是扩展平台的可选组件,但对于该平台中开发 apps 不是必需的。
以下各节介绍 SDKs 泛型基础结构以及如何创建平台 SDK 和扩展 SDK。
目标平台标记
平台 SDK
扩展 SDKs
目标平台标记
Visual Studio 2012 支持两个新属性:
目标平台标识符 (TPI):此属性的有效值包括您可以开发软件的各种平台。窗口是平台的示例。
目标平台版本 (TPV):此特性标识目标平台的版本。例如,对于 Windows 8,TPV 是 8.0,因此,TPI 是窗口。
同时,这两个特性构成目标平台标记 (TPM),窗体引用基础结构的 Windows 8 和 SDK 的基础。例如,Windows 8 的 TPM 是“窗口中,version=8.0”。
平台 SDK
需要平台 SDK 开发平台的 apps。例如,需要 Windows 8 SDK 开发 Windows 8的 apps。
安装
所有平台 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 可以代码的二进制文件。这些可以由 windows 元数据 (WinMD) 文件或程序集。 |
DesignTime 文件夹 |
包含只需在之前运行/调试时的文件。这些可以包括 XML 文档,库,标头,工具中设计时二进制文件,MSBuild 项目,等 ![]()
XML 文档在 \DesignTime 文件夹,在理想情况下,将放置,但是,XML 文档为引用将继续在引用文件放在 Visual Studio 2012。例如,XML 文档为引用 \References\[config]\[arch]\sample.dll 将为 \References\[config]\[arch]\sample.xml,并且,本地化版本该文档将为 \References\[config]\[arch]\[locale]\sample.xml。
|
配置文件夹 |
只能有三个文件夹:调试,零售和 CommonConfiguration。SDK 作者可以将自己的文件在 CommonConfiguration 下,如果同一组 SDK 文件应被使用,无论 SDK 使用者将针对的配置。 |
体系结构文件夹 |
所支持的任何结构文件夹可能存在。Visual Studio 2012 支持以下结构:x86、x64、ARM 和非。注意:为 x86 的 Win32 映射以及非" AnyCPU "映射。 在 .NET Framework 4.5,MSBuild 是硬编码只查找在 \CommonConfiguration\neutral 平台 SDK。 |
SDKManifest.xml |
此文件描述 Visual Studio 应如何使用 SDK。查看清单的 SDK 为 Windows 8:
DisplayName对象浏览器在找不到显示的值列表。
PlatformIdentity此特性中存在的通知 Visual Studio 和 MSBuild SDK 是平台 SDK,引用从它将不应复制局部。
TargetFrameworkVisual Studio 使用此属性可以确保在此属性中指定的值以同一框架只的项目可以使用 SDK。
MinVSVersionVisual Studio 使用此属性使用应用于它只的 SDK。
引用必须为包含控件的那些指定此属性引用。有关如何指定引用是否包含控件的信息,请参见下面的。
|
在 Visual Studio
引用管理器中查看目标平台标记 (TPM) 然后替换属性值在 HKLM\Software\Microsoft\Microsoft SDKs\[TPI]\v[TPV]\@InstallFolder = [SDK 根] 查看 Platform SDK 的磁盘位置。引用管理器将然后:
打开部署清单的 SDK 确定平台 SDK 是否适用于引用管理器调用的 Visual Studio 版本,并且平台 SDK 是否根据调用引用管理器的项目的目标框架适用。如果平台 SDK 适用于两次,引用管理器为枚举平台 SDK 引用选项卡的名称将使用目标平台标识符属性。如果平台 SDK 在磁盘上未找到,选项卡将显示,但是,中间窗格中显示消息“[TPI] SDK 在计算机未找到”。
枚举所有引用下指定 [InstallFolder 根]\references\CommonConfiguration\neutral 文件夹 [TPI] |核心选项。
并将所有程序集或 WinMD,用户在 Platform SDK 可以添加对它们的项目并使用它们在代码。
扩展 SDKs
扩展 SDKs 扩展平台,但对于该平台的开发的应用程序不是必需的。例如,Bing 地图和 windows live SDKs 扩展 Windows 8,但未由该操作系统的所有开发人员需要。
安装
扩展 SDKs 可以在四个位置之一将:
\Program Files\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs
\users\[用户名]\AppData\Local\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs
在为 dir1 和 dir2 标识磁盘上的任何两个位置的 <PropertyGroup><SDKReferenceDirectoryRoot>dir1;dir2</SDKReferenceDirectoryRoot></PropertyGroup> 的项目文件
HKLM\Software\Microsoft\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs\[SDKName]\[SDKVersion]\@default = [SDK 根],[SDK 根] 的位置是 [SDK 的路径]\[SDKName]\[]\SDKVersion
对于前面三个位置,注册表项不是必需的。可以放置扩展 SDK 在计算机,用户特定或自定义位置,并且,Visual Studio 将采用 SDK。如果这些结构都不适用,可以指定 SDK 的自定义位置使用注册表路径在第四位置。
布局
扩展 SDKs 将具有以下格式:
\[ExtensionSDKs root]
\[SDKName]
\[SDKVersion]
SDKManifest.xml
\References
\[config]
\[arch]
\Redist
\[config]
\[arch]
\DesignTime
\[config]
\[arch]
节点 |
描述 |
---|---|
SDKName\[]\[] SDKVersion |
窗体扩展 SDK 的标识。换言之,扩展 SDK 的名称和版本从相应的文件夹名称派生 SDK 根目录的路径。MSBuild 使用此标识查找磁盘上的 SDK 和 Visual Studio 显示在 属性 此窗口标识和引用管理器。 |
引用文件夹 |
包含 API 可以代码的二进制文件。这些可以是 windows 元数据 (WinMD) 文件或程序集。 |
Redist 文件夹 |
包含对运行时/调试是必需的,并且应获取打包为用户的应用程序一部分的文件。两个规则也适用:
|
DesignTime 文件夹 |
包含作为用户的应用程序的一部分,只需要之前运行/调试时,不要打包的文件。这些可以是 XML 文档,库,标头,工具中设计时二进制文件,MSBuild 项目,等等。 ![]()
所有 SDK 供消耗使用由的本机项目必须具有 SDKName.props 文件。下面的代码演示此类文件的示例。
![]()
XML 文档在 \DesignTime 文件夹,在理想情况下,将放置,但是,XML 文档为引用将继续在引用文件放在 Visual Studio 2012。例如,XML 文档为引用 \References\[config]\[arch]\sample.dll 将为 \References\[config]\[arch]\sample.xml,并且,本地化版本该文档将为 \References\[config]\[arch]\[locale]\sample.xml。
|
配置文件夹 |
只能有三个文件夹:调试,零售和 CommonConfiguration。SDK 作者可以将自己的文件在 CommonConfiguration 下,当应使用时相同的设置 SDK 文件,而不管 SDK 使用者面向的配置。 |
体系结构文件夹 |
所支持的任何结构文件夹可能存在。Visual Studio 2012 支持以下结构:x86,x64,ARM,非。为 x86 的 Win32 映射以及非" AnyCPU "映射。 |
SDKManifest.xml |
此文件描述 Visual Studio 应如何使用 SDK。若要查看该清单下面的示例中的 SDK。
节点描述
DisplayName显示的值引用管理器、解决方案资源管理器、对象浏览器和其他位置用户界面的 Visual Studio 的。
ProductFamilyName整体 SDK 产品名。例如,Windows JavaScript 库 (WinJS) SDK 将提供了名称“Microsoft.WinJS.1.0”和“Microsoft.WinJS.2.0”的 SDKs,属于 SDK 产品系列的同一系列,“Microsoft.WinJS”。此特性使 Visual Studio 和 MSBuild 生成该连接。如果此属性不存在,SDK 名称用作产品系列的名称。
FrameworkIdentity只适用于 windows 组件库。此属性的值放入清单使用的 app's 指示在一个或多个 windows 组件库的依赖项。
TargetFramework用于的值确定 SDKs 可用的引用管理器和工具框。这可能是分号分隔的列表目标框架标记。如果同一目标 framework 的多个版本指定,引用管理器用于筛选用途是使用最低的指定版本。例如,因此,如果“.NET framework 中,version=v2.0;.NET framework 中,version=v4.0”指定,引用管理器将使用“.NET framework 中,version=v2.0”。如果特定目标 framework 配置文件中指定,因此,只有该配置文件将由引用管理器用于筛选目的。例如,那么,当“Silverlight 中,version=v4.0,profile=WindowsPhone”指定时,引用管理器将只筛选在 windows phone 配置文件;以完整的 Silverlight framework 4.0 的项目不显示在引用管理器中的 SDK。
MinVSVersion用于筛选 SDKs 在每个 Visual Studio 版本显示。
AppliesTo
用于的值确定 SDKs 可在引用管理器通过指定适用的 Visual Studio 项目类型。在 Visual Studio 2012,九个值都识别:WindowsAppContainer、VisualC,CSharp、VB 中,WindowsXAML、JavaScript,管理和本机。SDK 作者可以使用和 (" + "),或者 ("|"),非 (! "") 正确指定范围的运算符应用于 SDK 的项目类型。
![]()
WindowsAppContainer 标识 Windows 应用商店 apps 的项目。
SupportPrefer32Bit支持的值为“true”和“false”。如果该值设置为“true”,结果是相同的,就象属性未设置;即默认值假定 Prefer32Bit 支持。如果该值设置为“false”,MSBuild 返回 Windows 应用商店 项目中的错误 (或桌面项目的警告),如果引用 SDK 的项目启用的 Prefer32Bit。有关 Prefer32Bit 的更多信息,根据您的编程语言参见以下主题之一,例如:
SupportedArchitectures分号分隔的列表结构 SDK 支持的属性。如果对使用的项目的目标 SDK 体系结构,不支持 MSBuild 显示警告。如果未指定该特性,MSBuild 从不显示此类警告。
SupportsMultipleVersions如果此特性设置为 错误 或 警告,MSBuild 指示同一项目不能引用同一 SDK 系列的多个版本。如果此属性不存在或未设置为 允许,MSBuild 不显示这种错误或警告。
AppX只适用于 windows 组件库。此特性的值指定路径 app 程序包为 windows 组件库在磁盘,在本地调试期间,并且,路径传递给 windows 组件库的注册该组件。文件名的命名约定为 [] 公司。[产品]。[结构]。[] 配置。[] 版本 .appx。如果它们不适用于 windows 组件库,配置和体系结构是可选的按属性名称和属性值。
CopyRedistToSubDirectorySDK 作者可以确定 \redist 文件夹下面的文件在何处下将复制相对 app 程序包根 (即在创建 App 程序包向导选择的 软件包位置 ) 和运行时格式根。默认位置为 app 程序包和 F5 布局的根。
DependsOndelimited 列表定义 SDKs 此 SDK 依赖的 SDK 标识。此属性将出现在引用管理器的细节窗格中。
MoreInfo包含 URL 提供 SDK 使用者提供指南的网页。此值在引用管理器的右窗格的更多信息。
文件引用必须为这些仅指定此程序集/WinMD 引用包含控件或是注册类型必须指定的本机 WinMD。
注册类型此属性在清单中。app 的指定 WinMD 注册和对于本机 WinMD,需要有重复实现 DLL。
工具箱
下表描述支持的特性。
在工具中的位置SDKManifest.xml 示例 (适用于任何引用– WinMD 或 DLL)
枚举所有控件,并将其置于工具中默认类别。
枚举所有控件,并将它们以特定类别的名称。
枚举特定控件,并将它们以特定类别的名称。
枚举特定控件,并将它们以不同的类别名称在组合和 Visual Studio。
不同的枚举特定控件在组合和 Visual Studio。
枚举特定控件,并且只将它们放在 Visual Studio 常用路径下或任何控件组中。
枚举特定控件,并在 ChooseItems 仅显示特定设置,而无需在工具框。
|
在 Visual Studio
引用管理器中查看目标平台标记 (TPM) 然后替换属性值在 \Program Files\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs,\users\[用户名]\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs,和 HKLM\Software\Microsoft\Microsoft SDKs\[TPI]\v[TPV]\ExtensionSDKs\ 查看扩展 SDKs 的磁盘位置。
引用管理器将打开 SDK 清单每个扩展 SDK 确定扩展 SDK 是否适用于引用管理器调用的 Visual Studio 版本,扩展 SDK 是否根据调用引用管理器的目标框架适用的项目,并且,AppliesTo 属性值是否符合调用引用管理器项目系统的播发的功能。如果扩展 SDK 适用于所有计数,引用管理器将显示 DisplayName、版本和 SDK 依赖项根据清单扩展的 SDK 正确然后填写更多信息。
扩展 SDK 显示为引用管理器的条目。一旦添加,显示为 解决方案资源管理器 的单个节点托管 apps 以及窗口生成的 Windows 应用商店 apps 的使用 JavaScript。SDK 将显示为在属性页中的条目 Visual C++ 项目中。用户立即不必执行任何其他操作。用户为 IntelliSense、工具框、设计器、对象浏览器、生成、部署,调试和打包设置。
![]() |
---|
|