构建 Visual Studio 2008 的 CodeProject 插件






3.91/5 (5投票s)
从 Visual Studio IDE 中利用 CodeProject.com 上丰富的资源。
背景
随着 Visual Studio 的每次新版本发布,微软都为开发者提供了额外的工具,以帮助他们更快速、更有效地完成工作。这些工具中最有用的就是 Visual Studio SDK,它使开发者能够创建插件。这些插件可用于在 IDE 中提供额外的特性和功能。给予插件开发者的灵活性非常大 - Visual Studio 的几乎每一个方面都可以相对容易地进行监控和控制。 事实上,编写 Visual Studio 插件最难的部分可能是想出一个有用的功能来开发插件!
我们都知道,任何优秀的开发者每天至少会花几分钟时间浏览 CodeProject.com。 许多访问都是由开发过程中出现的编程问题驱动的,因此允许开发者从 Visual Studio IDE 本身利用 CodeProject.com 上丰富的资源是完全合理的。 这正是为 Visual Studio 2008 构建 Code Project 插件的前提。 在这里下载您的副本:https://codeproject.org.cn/services/addins/。
入门
要创建一个新的插件项目,请转到“文件”->“新建项目”->“其他项目类型”->“可扩展性”,然后选择“Visual Studio 插件”。
为您的项目命名并单击“确定”。 这将启动插件向导。 单击“下一步”开始。
选择您首选的开发语言。 然后,系统将提示您选择一种开发语言,以及插件是否应能够在 VS.NET IDE 或 Macro IDE 中运行,或两者都运行。 在我们的例子中,我们为 Visual Studio 2008 选择两者。
接下来,我们输入插件的名称和单行描述。 我们快完成了。
6 步中的第 4 步是“插件选项”对话框。 此对话框允许在“工具”菜单中创建一个相应的项目,并确定插件的加载时间和谁可以使用它。
6 步中的第 5 步用于填充“帮助”->“关于”信息框。
最后一个对话框是一个确认屏幕,显示到目前为止选择的选项。 单击“完成”,您就可以开始了。
最初,您的解决方案资源管理器将如下所示
这是您的 Visual Studio 插件项目的基础,也是开始实现您的想法所需的一切。 当然,绝大多数插件都需要放置 UI 元素,以允许用户与之交互并使用它们。 Visual Studio SDK 允许轻松创建这些元素并将它们放置在 IDE 中。 但是,如果您正在寻找稍微更漂亮、更现代的 UX 呈现,那么您将需要比 Visual Studio SDK 中支持的基本 UI 样式和元素更多的东西。 输入 XAML。 Code Project 插件具有由 WPF/XAML 实现的精美界面和更简洁的 UI/UX 体验。 将其付诸实践需要比我们已经完成的更多的工作。
为了遵循良好的软件设计原则,我们将关注点分离; 我们为 WPF UI 创建一个单独的项目,该项目将成为插件的前端。 创建 WPF 项目后,您可以开始设置其样式并实现其各种 UI 行为。 我强烈建议在 Blend 中操作 Window(以及其中嵌套的任何后续控件)的 XAML,因为它为这些任务提供了 VS 无法提供的灵活性和响应性。 一旦您的 WPF/XAML 看起来和表现得如您所愿,只需将所有这些内容嵌套在一个常规用户控件中,该控件将反过来集成到 Visual Studio 中。 我们采用这种方法是因为 XAML 尚未在 Visual Studio SDK 中得到完全支持。
弥合 VS-SDK XAML 鸿沟
为此,您需要创建一个用户控件,如下所示,通过编程方式创建 XAML 控件并注入它们
public partial class CodeProjectSearchControl :
UserControl, IVsRunningDocTableEvents, IOleCommandTarget
{
/// <summary>
/// override the OnLoad event
/// </summary>
/// <param name="e"></param>
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (GlobalVariables.DTE == null)
GlobalVariables.DTE = this.GetEnviroment();
// create the search panel control
// create the ElementHost control for hosting the WPF UserControl.
ElementHost host = new ElementHost();
host.Dock = DockStyle.Fill;
// Create the WPF UserControl
this.uc = new SearchPanelControl();
this.uc.SetDTE(GlobalVariables.DTE);
host.Child = this.uc;
this.pnlSearch.Controls.Add(host);
// create the ad rotator control
ElementHost adhost = new ElementHost();
adhost.Dock = DockStyle.Fill;
AdRotator aduc = new AdRotator();
aduc.SetDTE(GlobalVariables.DTE);
adhost.Child = aduc;
this.pnlProperty.Controls.Add(adhost);
}
}
这两个协同工作的项目负责将 UI 连接到插件,现在您可以自由地将功能和 WPF 的活力添加到您自己的 Visual Studio 插件中!