您可以按文件副本分发 Windows 运行时组件。但是,如果组件中包含许多文件,用户安装时可能会需要很长时间。此外,如果文件放错位置或未设置引用,将可能给用户带来问题。通过将复杂的组件打包为 Visual Studio 扩展 SDK,可使其变得易于安装和使用。用户只需为整个包设置一个引用即可。通过**“扩展和更新”**对话框,用户可轻松找到并安装组件,如 MSDN Library 中的 Installing and Managing Visual Studio Tools and Extensions(安装和管理 Visual Studio 工具与扩展)所述。
规划可分发的 Windows 运行时组件
为二进制文件(例如 .winmd 文件)选择唯一的名称。建议采用以下格式来确保唯一性:
company.product.purpose.extension
例如:Microsoft.Cpp.Build.dll
您的二进制文件将以应用程序包的形式安装,其中还可能有其他开发人员编写的二进制文件。请参见 MSDN Library 上 How to: Create a Software Development Kit(如何:创建软件开发工具包)中的“Extension SDKs”(扩展 SDK)。
若要确定组件的分发方式,请考虑组件的复杂程度。在下列情况中,建议使用扩展 SDK 或类似的包管理器:
组件包含多个文件。
提供了针对多个平台(例如 x86 和 ARM)的软件版本。
同时提供了组件的调试和发布版本。
组件包含仅在设计时使用的文件和程序集。
如果存在上述多种情况,则扩展 SDK 将尤其有用。
备注
对于复杂的组件,NuGet package management system(NuGet 包管理系统)提供了可代替扩展 SDK 的开源工具。与扩展 SDK 一样,NuGet 可用于创建包来简化复杂组件的安装。有关 NuGet 包与 Visual Studio 扩展 SDK 的对比,请参见 MSDN Library 中的 Adding References Using NuGet Versus an Extension SDK(添加引用:使用 NuGet 与扩展 SDK 的对比)。
按文件副本分发
如果组件包含单个 .winmd 文件或包含 .winmd 文件与资源索引 (.pri) 文件,可直接将 .winmd 文件提供给用户进行复制。用户可将该文件放在项目中的任意位置,使用**“添加现有项”对话框将 .winmd 文件添加到项目中,然后使用“引用管理器”**对话框创建引用。如果组件中包含 .pri 文件或 .xml 文件,请指示用户将这些文件与 .winmd 文件放在一起。
备注
当您生成 Windows 运行时组件时,Visual Studio 2012 始终会生成一个 .pri 文件,即使您的项目不包含任何资源,情况也不例外。如果为组件创建了测试应用程序,可通过在 bin\debug\AppX 文件夹中检查应用程序包的内容来确定是否使用了 .pri 文件。如果该位置没有显示组件中的 .pri 文件,则不需要分发该文件。您也可以使用 MakePRI.exe 工具转储 Windows 运行时组件项目中的资源文件。例如,在 Visual Studio 命令提示符窗口中,键入:
makepri dump /if MyComponent.pri /of MyComponent.pri.xml
有关 .pri 文件的更多信息,请参见资源管理系统 (Windows)。
按扩展 SDK 分发
复杂的组件通常包含 Windows 资源,但请参见上一部分中有关检测空 .pri 文件的说明。
创建扩展 SDK
请确保已安装 Visual Studio 2012 SDK。Visual Studio SDK 可从 Visual Studio 下载页面下载。
使用**“VSIX 项目”模板创建一个新项目。此模板位于“Visual C#”或“Visual Basic”下的“扩展性”**类别中。此模板将安装为 Visual Studio 2012 SDK 的一部分。(MSDN Library 中的 Walkthrough: Creating an SDK using C# or Visual Basic(演练:使用 C# 或 Visual Basic 创建 SDK)通过一个非常简单的场景演示了如何使用此模板。)
确定 SDK 的文件夹结构。文件夹结构的最顶端是 VSIX 项目的根级元素,该结构中包含**“References”、“Redist”和“DesignTime”**文件夹。
References 是用户可用于编程的二进制文件的位置。在用户的 Visual Studio 项目中,扩展 SDK 会创建指向这些文件的引用。
Redist 用于放置必须随二进制文件(包含在使用您的组件创建的应用程序中)一起分发的其他文件。
DesignTime 用于放置仅在开发人员使用您的组件创建应用程序时使用的文件。
在上述每个文件夹中,都可以创建配置文件夹。允许的名称为**“debug”、“retail”和“CommonConfiguration”。“CommonConfiguration”文件夹用于放置同时用于零售和调试版本的文件。如果只分发组件的零售版本,可将所有文件都放在“CommonConfiguration”**中,并忽略另外两个文件夹。
在每个配置文件夹中,可为特定于平台的文件提供体系结构文件夹。如果对所有平台使用相同的文件,可以只提供一个名为**“neutral”**的文件夹。有关文件夹结构的详细信息,请参见 MSDN Library 中的 How to: Create a Software Development Kit(如何:创建软件开发工具包)。(How to: Create a Software Development Kit(如何:创建软件开发工具包)探讨了平台 SDK 和扩展 SDK。您可能会发现,折叠有关平台 SDK 的部分非常有用,可以避免混淆。)
创建 SDK 清单文件。清单指定名称和版本信息、SDK 支持的体系结构、.NET Framework 版本,以及有关 Visual Studio 如何使用 SDK 的其他信息。有关详细信息和示例,请参见 How to: Create a Software Development Kit(如何:创建软件开发工具包)。
生成和分发扩展 SDK。有关详细信息,包括如何本地化和签署 VSIX 包,请参见 MSDN Library 中的 VSIX Deployment(VSIX 开发)。
请参见
其他资源
How to: Create a Software Development Kit(如何:创建软件开发工具包)
NuGet package management system(NuGet 包管理系统)
Installing and Managing Visual Studio Tools and Extensions(安装和管理 Visual Studio 工具与扩展)