9

我有一个基于元数据生成文本(表示接口和类)的项目。我想把这个生成的代码作为一个新的类和接口直接插入到特定项目和目录下当前打开的解决方案中。我将创建将生成类的菜单工具,但我不知道如何从我的自定义 Visual Studio 扩展中访问以下项目:

  1. 迭代当前解决方案并找到一个项目将生成的代码转储到其中。
  2. 在 Visual Studio 中打开一个新文件窗口,并将我的工具生成的文本直接注入该窗口。
  3. 在我的自定义扩展中的当前解决方案中的特定项目中创建一个新文件夹。

编辑 - 为了澄清我需要打开一个新文件(例如,右键单击项目 -> 添加 -> 新类)并从我的自定义 Visual Studio 扩展中将文本插入其中。

谢谢

4

1 回答 1

14

要从 Visual Studio 扩展 (ToolWindowPane) 创建新文件,首先使用 GetService 方法:

// Get an instance of the currently running Visual Studio IDE
DTE dte = (DTE)GetService(typeof(DTE));

其次,确保当前打开了解决方案,如果没有打开解决方案,则文件生成将不起作用:

string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);

第三,从 DTE 对象生成新文件:

dte.ItemOperations.NewFile(@"General\Visual C# Class", "ObjectOne", EnvDTE.Constants.vsViewKindTextView);

创建新文件后,使用以下代码访问该文件的文本并将其替换为您生成的文本:

TextSelection txtSel = (TextSelection)dte.ActiveDocument.Selection;
TextDocument txtDoc = (TextDocument)dte.ActiveDocument.Object("");

txtSel.SelectAll();
txtSel.Delete();
txtSel.Insert("Hello World");
于 2012-04-15T05:25:24.853 回答