功能扩展疑难解答

您可以创建自己的功能扩展,如自定义代码分析规则、数据库单元测试条件、数据生成器、重构类型、生成参与者和部署参与者。 在安装这些功能扩展时,可能会出现问题,导致无法成功加载相应的扩展。 本主题讨论了最常见的问题以及可用于解决这些问题的步骤。 有关如何安装和注册功能扩展的更多信息,请参见如何:注册和管理功能扩展

功能扩展尚未加载时的初始步骤

在安装并注册您的功能扩展后,必须重新启动 Visual Studio。 在重新启动 Visual Studio 后,首先应执行的步骤是显示**“错误列表”。 如果有一个或多个扩展未能加载,则“错误列表”**中可能会显示错误。 在“视图”菜单上,单击“错误列表”。 如果出现如下所示的错误,则表明扩展未正确加载:

Failed to load extension MyBuildContributor.ModelStatisticsReport. Exception message: Could not load type 'MyBuildContributor.ModelStatisticsReport' from assembly 'MyBuildContributor, Version 1.0.0.0, Culture=neutral, PublicKeyToken=34fdfd7e8ae7c7a8'.

在某些情况下,例如,如果未找到任何 .extensions.xml 文件,则将不会加载扩展,也不会显示任何错误。

诊断扩展加载失败的原因

可能导致扩展加载失败的原因包括:

  • 扩展文件包含一个或多个错误

  • 未对扩展程序集进行签名

  • 找不到 extensions.xml 文件

  • 找不到扩展程序集

  • 扩展中的代码未扩展正确的类

  • 扩展中的类或成员不具有正确的特性

扩展文件包含一个或多个错误

导致扩展加载失败的最常见原因是,您的 Extensions.XML 文件中具有以下的一个或多个错误:

  • 类型名称不正确

  • 程序集名称不正确

  • 版本号不正确

  • 公钥标记不正确

  • 有关如何创作 extensions.xml 文件的信息,请参见如何:注册和管理功能扩展

未对扩展程序集进行签名

如果未对您的扩展程序集进行签名,则 Visual Studio 无法加载它。 若要对扩展程序集进行签名,请按照以下步骤进行操作:

为程序集签名并生成程序集

  1. 打开包含扩展项目的解决方案。

  2. 在**“项目”菜单上,单击“MyExtensionProject 属性”**,其中的 MyExtensionProject 是包含要对其进行签名的功能扩展的项目的名称。

  3. 单击**“签名”**选项卡。

  4. 单击**“为程序集签名”**。

  5. 在**“选择强名称密钥文件”中,单击“<新建>”**。

  6. 在**“创建强名称密钥”对话框中的“密钥文件名称”**中,键入 MyRefKey。

  7. (可选)可以为强名称密钥文件指定密码。

  8. 单击**“确定”**。

  9. 在**“文件”菜单上,单击“全部保存”**。

  10. 在**“生成”菜单上,单击“生成解决方案”**。

    接下来,必须安装并注册程序集,以便在部署数据库项目时将加载该程序集。

找不到 Extensions.XML 文件

如果您未提供 XML 文件来向 Visual Studio 注册您的扩展,则将不会加载该扩展。 通常将 MyAssembly.Extensions.XML 文件复制到 %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions\MyExtensions 文件夹,其中的 MyAssembly 是扩展的名称。

提示

建议您不要将 XML 文件直接复制到 [Program Files]\Microsoft Visual Studio 10.0\VSTSDB\Extensions 文件夹中。 如果您改用一个子文件夹,则可以防止意外地更改随 Visual Studio提供的其他文件。

有关如何创建 Extensions.XML 文件的更多信息,请参见如何:注册和管理功能扩展

找不到扩展程序集

如果您未将扩展程序集复制到 Extensions 文件夹,则将不会加载扩展。 通常将 MyAssembly.dll 和 MyAssembly.pdb 文件复制到 %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions\MyExtensions 文件夹,其中的 MyAssembly 是扩展的名称。

提示

建议您不要将 XML 文件直接复制到 [Program Files]\Microsoft Visual Studio 10.0\VSTSDB\Extensions 文件夹中。 如果您改用一个子文件夹,则可以防止意外地更改随 Visual Studio 高级专业版 提供的其他文件。

扩展中的代码未扩展正确的类

对于每个类型的功能扩展,主类都会扩展特定的基类。 如果未从正确的基类继承,则扩展将无法正常运行。 有关更多信息,请参见相应的演练。

扩展中的类或成员不具有正确的特性

对于每个类型的功能扩展,类都必须具有一个特性,用于声明该扩展可兼容的数据库架构提供程序的类型。 此外,某些扩展需要一个或多个类方法的附加特性。 有关更多信息,请参见相应的演练。

请参见

概念

创建自定义数据库重构类型或目标

创建和注册用于分析数据库代码的其他规则

用自定义数据生成器生成专用的测试数据

定义数据库单元测试的自定义条件

其他资源

使用生成参与者和部署参与者自定义数据库生成和部署