C#生成器需要以编程方式格式化文件

时间:2013-11-28 09:41:25

标签: c# visual-studio-2010 envdte

我有一个C#Visual Studio 2010控制台应用程序,它从Excel电子表格中读取行,然后使用StreamWriter相应地生成C#类。

类中生成的代码行是未格式化的 - 因为它们没有缩进。

我知道我可以手动打开这些文件,然后输入ctrl E + D格式化它们。

但我需要知道如何在生成器应用程序中以编程方式格式化它们。

我尝试过以下代码:

Type typeDTE = typeDTE = Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
DTE dte = (DTE)Activator.CreateInstance(typeDTE, true);
dte.ExecuteCommand("Edit.FormatDocument", @"D:\Dev\ClinicalAuditGenerator\src\ClinicalAuditGenerator\Files\Entity\Patient.cs");

但有2个问题

1)CreateInstance需要将近30秒

2)ExecuteCommand抛出以下异常:

Command Edit.FormatDocument is not available.

由于

1 个答案:

答案 0 :(得分:1)

这是因为在执行Edit.FormatFile时,Visual Studio没有打开文件。我也在寻找一个干净的解决方案...... Temporary a Quick n'Dirty one仅适用于小文件(对不起):

private void FormatFiles(Project project, List<ProjectItem> ProjectItems)
{
    for (int i = 0; i < ProjectItems.Count- 1; i++)
    {
        ProjectItems[i].Open();
        FromatFileIsOpened(ProjectItems[i]);
        ProjectItems[i].Document.Close();
    }
}


private void FromatFileIsOpened(ProjectItem formatFile)
{
    try
    {
        formatFile.Document.Activate();
        formatFile.DTE.ExecuteCommand("Edit.FormatDocument");
    }
    catch
    {
       FromatFileIsOpened(formatFile);
    }
}
相关问题