【发布时间】:2017-07-16 20:44:11
【问题描述】:
简而言之: 我是 VisualStudio 可扩展性的新手,我的目标是创建一个带有 ToolWindow(已经可以使用)的扩展,显示 VisualStudio 解决方案的每个上下文的不同视图,即。 e.解决方案的视图、项目的视图等。应通过单击解决方案资源管理器、类视图、对象浏览器和(理想情况下)任何其他显示内容的窗口中的上下文菜单条目来打开该窗口,例如项目、命名空间、类等。
搜索后我发现了很多信息,但对于某些点我找不到非常有用的信息。我该怎么...
- ...为 VisualStudio 视图创建上下文菜单项?
- ...获取当前打开的解决方案作为代码中的实例?
- ... 将解决方案的项目及其内容作为代码实例获取?
- ...在代码中添加/删除项目到解决方案/项目/类/...?
- ...对解决方案资源管理器中的选择更改做出反应?
到目前为止我做了什么: 我阅读了Starting to Develop Visual Studio Extensions 的文档并下载了VSSDK-Extensibility-Samples。特别是 WPF_Toolwindow 示例对我来说很有趣,所以我构建并运行了它,到目前为止它是成功的。另一个有趣的示例是 WPFDesigner_XML,但它总是抛出 NullReferenceException,所以我决定坚持使用以前的 ToolWindow,它现在完全没问题。
此外,我试图通过仔细查看项目中的每个文件、在调试器中运行它并分析发生的情况来理解该示例。我相信我理解它,但也愿意纠正我可能被误导的想法。
现在,我创建了一个基于 WPF_Toolwindow 示例的新项目,重命名并适应了我的需要(基本上,我创建了新的 GUID,重命名了命名空间并删除了我不会使用的东西)。此扩展在调试器中仍然有效。我什至卸载了实验实例中的所有内容,并从头开始调试扩展。
我想达到的目标:
- 当解决方案资源管理器(或任何其他 VisualStudio 视图)中的选择发生变化时,让 ToolWindow 加载特定的视图/视图模型。或者,解决方案资源管理器树(或任何其他 VisualStudio 视图)中每个节点的上下文菜单都应该有一个上下文菜单项。
- 从解决方案资源管理器的内容中获取当前打开的解决方案、包含的项目以及基本上所有内容,作为可在我的视图模型中处理的实例。我需要正确添加/删除
- 类/结构/枚举到/从
- 项目中的文件夹
- 命名空间
- 类/结构的属性/字段
- 类/结构/枚举到/从
- 根据解决方案信息生成代码,并将文件正确添加到项目中。
有没有人知道这样的例子,或者任何人都可以给我一些提示,我可以在哪里找到更多信息?任何帮助,将不胜感激。提前致谢。
【问题讨论】:
-
第一个问题,你的意思是在项目项上动态添加上下文菜单吗?第二个问题,请尝试使用Roslyn从解决方案中获取相关类。
-
第三个问题,你的意思是生成一个代码文件,并将该文件添加到项目中?
-
(1) 这些项目已经有一个上下文菜单,我想在这个菜单中添加一个新命令。 (2) 感谢罗斯林的提示,我去看看。 (3) 是的,基本上不用手动操作项目文件就可以在项目中添加文件就好了。
标签: wpf visual-studio-2017 visual-studio-extensions