65.9K
CodeProject 正在变化。 阅读更多。
Home

将共享代码库构建为 VS.NET 插件

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (7投票s)

2005 年 3 月 31 日

5分钟阅读

viewsIcon

91948

downloadIcon

594

一个 VS.NET 插件,可将代码片段存储在数据库中。通过该插件,您可以添加代码,搜索数据库中的代码片段。还包含有关如何作为插件集成到 IDE 的示例。

引言

“CodeManager”是 VS.NET 的一个插件,可将代码片段存储在数据库中。通过该插件,您可以添加代码,搜索数据库中的代码片段以插入到您的代码中。这实际上是它的核心。我之所以花费所有精力创建它,是因为我们(开发人员集体)需要一种在我们组织中共享代码的方法。因此,我用一个被严重浪费的假期写了它!为了证明所花费的时间是值得的,我现在将其强加给您。

在分析了现有产品后(想购买第三方解决方案 - 结果发现它们价格过高),我认为我可以在几天内以极低的成本获得类似的结果。我是在一年多以前的一个短假期里开发的,因此代码质量不是我引以为傲的,但它确实完成了它的设计任务。对我来说,这是一个关于重用和利用现有代码/类的绝佳示例,并能够将开发时间减少几个数量级。

如果您有以下需求,这将会很有趣;

  • 您想学习如何创建真实的 VS.NET 插件。
  • 您需要一个可以内部维护和扩展的共享代码库。

以下是它运行的一些截图

向库中添加代码

搜索代码

背景

这本书为我提供了几个关键技巧,以帮助我快速完成此项工作:编写 Visual Studio .NET 插件

我使用了 Julijan 的插件代码并对其进行了扩展,以包含项目中的版本控制构建,具体细节请参阅文章版本控制构建

使用代码

您可以选择使用安装程序和数据库脚本来设置一个可用的安装,或者在您的 IDE 中设置代码。我推荐后者,尽管它需要更多的努力,但它能让您有机会真正检查正在发生的事情。

对于在 .NET 中使用 ToolWindows,整体概念是相同的。需要注册 VSUserControlHost DLL(如果您不使用安装程序)。然后,它用于托管一个用户控件,该用户控件包含 ToolWindow 的所有功能(如主屏幕截图所示)。这个用户控件提供了一个与包含代码片段的 SQL Server 数据库的接口。其他集成点包括主菜单项、工具栏项、选项对话框和输出窗口(所有这些都在下面的图像中显示)。用户使用 Windows 身份验证/Active Directory 进行验证,并动态添加。我还包含了一个更新的版本更新程序(抱歉这句话),如 Julijan Sribar 在参考文献中所述。

上下文菜单

主菜单

输出窗口

工具栏项

设置

  • 您需要一个 SQL 数据库服务器来使用。创建一个数据库,命名为 RADDev,然后将提供的脚本安装到其中。
  • 您还需要注册 VSUserControlHostLIb - 项目随代码一起提供。打开命令提示符,导航到 VSUserControlHost.dll 所在的文件夹,然后键入 regsvr32 VSUserControlHost.dll
  • 现在,打开解决方案,您将看到三个项目。
  • WinUserControlTestProject - 这是用于在开发过程中测试主用户控件功能的项目。在测试插件时,有一个单独的测试应用程序来测试核心功能非常方便,因为重新加载插件会增加调试时间。
  • RadDevSetup - 这是设置程序,它构建可分发版本。这个没有什么特别之处。
  • 最后,RadDev - 这是插件项目本身,它确实有很多有趣的东西。

关注点

  • clsCodeDBFunctions – 这个类与下面的数据访问器类 clsDBTier 进行交互 – 这是一个访问器块类型的类。它现在已经过时了,但它仍然能完成工作。
  • clsNodeTag: 这个类存储树节点的​​信息,它只是一个容器类(可能应该是一个结构,但谁知道将来还需要添加什么)。
  • clsRegistration – 处理许可证、新用户的注册,并解密许可证以供检查。当前代码集不再检查注册。我为公司构建的版本仅限于公司的域。
  • clsWinAuthentication – 这个类根据用户的 Windows 域和用户名对其进行身份验证,然后检查数据库以查看他们是否已被添加。如果他们是新用户,则会提示他们输入更多详细信息,然后将其添加到数据库中。了解谁在添加文章很重要,因为只有添加文章的用户才能删除它。此外,我还编写了 ASP.NET 应用程序中的控件,这些控件根据数据库内容创建内容,因此您需要文章的名称。
  • Crypto.vb – 这个文件用于加密/解密许可证密钥。所有功劳归 Stan Schultes。
  • 我将不再详细介绍代码,因为它很有趣,但没有什么特别突出的。您确实需要从代码集中挑选出最让您感兴趣的部分。

历史

它确实需要彻底清理,删除未使用的代码。它最需要的是一个真正需要这个工具的人来接管它(我有太多的其他项目/承诺),并对其进行清理和改进。因此,我将其公之于众。有很多地方可以改进。有一些冗余类,例如 VSS 集成和维护数据库版本,这些仍然是好主意,但未包含在此版本中。我的计划是创建一个也进行集成变更管理的工具,并将其链接到我已经在使用的基于 Web 的系统。我认为市场上有对涵盖这些领域的开源插件的需求。我相信商业选项的市场价格过高。

© . All rights reserved.