我有一个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.
由于
答案 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);
}
}