使用EnvDTE自动缩进现有文件

时间:2014-11-25 11:18:55

标签: c# envdte auto-indent

我使用T4文本模板进行自动代码生成,但此代码必须格式不正确,特别是因为TT文件。

我想使用EnvDTE来应用smartformat,但我发现的所有示例都需要在应用程序上打开文件。

有没有办法将smartformat应用到现有文件而不打开它?

有人有例子吗?

2 个答案:

答案 0 :(得分:0)

必须打开文档,但这并不意味着文档对用户可见。

给定一个EnvDTE.ProjectItem,您可以使用所需的视图(代码)打开(查看)它,然后得到一个不可见的EnvDTE.Window(您需要设置.Visible = true)。但是,您可以获取其.Document属性,然后将其.Object属性强制转换为EnvDTE.TextDocument,然后获取.StartPoint和.EndPoint文本点,从中获取.CreateEditPoint以获取编辑点和您之间的.SmartFormat()它们。

答案 1 :(得分:0)

此代码对我有用:

 Window window = projectItem.Open();
 EnvDTE.TextDocument textDocument = window.Document.Object() as EnvDTE.TextDocument;

 textDocument.Selection.SelectAll();
 textDocument.Selection.SmartFormat();

 window.ProjectItem.Save();