使用EnvDTE自动缩进现有文件

问题描述 投票:0回答:2

我正在使用T4 Text模板进行自动代码生成,但是这段代码的格式不正确,特别是因为TT文件。

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

有没有办法将智能格式应用到现有文件而不打开它?

有人有例子吗?

c# envdte auto-indent
2个回答
0
投票

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

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


0
投票

这段代码对我有用:

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

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

 window.ProjectItem.Save();
© www.soinside.com 2019 - 2024. All rights reserved.