从Visual Studio扩展生成代码

时间:2012-04-12 15:31:44

标签: c# visual-studio-2010 visual-studio-extensions office-addins

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

  1. 迭代当前解决方案并找到一个项目,将生成的代码转储到。
  2. 在Visual Studio中打开一个新文件窗口,并将我工具生成的文本直接注入该窗口。
  3. 在我的自定义扩展程序中,在当前解决方案的特定项目中创建一个新文件夹。
  4. 编辑 - 为了澄清我需要打开一个新文件(例如右键单击一个项目 - >添加 - >新类)并从我的自定义Visual Studio扩展中插入文本。

    由于

1 个答案:

答案 0 :(得分:12)

要从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");