Как отформатировать все файлы в Visual Studio 2012?
В предыдущих версиях Visual Studio я использовал Kevin Pilch-Bisson script для форматирования всех файлов С# в моем решении.
VS2012 опустил поддержку макросов, так что больше не работает.
Как я могу легко форматировать все мои документы в VS2012?
Ответы
Ответ 1
Откройте Инструменты → Диспетчер пакетов библиотек → Консоль диспетчера пакетов и выполните приведенную ниже команду. В конце все документы будут открыты в среде IDE. (У машин с низким уровнем ОЗУ будут проблемы с большими решениями.) Измененные файлы будут
изменен в среде IDE и не сохраняется на диске. Вы можете сохранить все, а затем закрыть все, если вы готовы.
VS2012 удалил VB-подобный макроязык, существовавший в предыдущей версии
Visual Studio. Тем не менее, базовый интерфейс DTE по-прежнему существует, и вы
может достигнуть его через PowerShell, в консоли диспетчера пакетов
Странный идентификатор GUID, переданный ProjectItem.Open
Constants.vsViewKindCode
.
Обычно я бы разделил это на несколько строк, но консоль диспетчера пакетов
не поддерживает продолжение строки.
Вы можете найти последнюю версию на https://gist.github.com/JayBazuzi/9e0de544cdfe0c7a4358
function f($projectItems) { $projectItems | ? { $_.Name.EndsWith( ".cs" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } }
$dte.Solution.Projects | % { f($_.ProjectItems) }
Ответ 2
Здесь обновляется существующий script, который работает на очень больших решениях.
Он открывает каждый файл, форматирует его, затем сохраняет и закрывает файл, а не оставляет его открытым. Он также пропускает ".designer". файлы, так как они обычно должны быть оставлены в покое.
Это работает в Visual Studio 2012 и 2013. Вы можете скопировать и вставить его непосредственно в консоль диспетчера пакетов.
ПРЕДУПРЕЖДЕНИЕ: Вставка этого кода в консоль немедленно откроет и отформатирует каждый файл С# в вашем полном решении, сохраняя каждый измененный файл без запроса. Это может быть хорошей идеей сначала вступить...
function FormatItems($projectItems) {
$projectItems |
% {
# Write-Host " Examining item: $($_.Name)";
if ($_.Name -and $_.Name.ToLower().EndsWith(".cs") `
-and (-not $_.Name.ToLower().Contains(".designer."))) {
$win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}');
$win.Activate();
$dte.ExecuteCommand('Edit.FormatDocument');
if (!$_.Saved) {
Write-Host " Saving modified file: $($_.Name)";
$dte.ExecuteCommand('File.SaveSelectedItems');
}
$dte.ExecuteCommand('Window.CloseDocumentWindow');
}
if ($_.ProjectItems -and ($_.ProjectItems.Count -gt 0)) {
# Write-Host " Opening sub-items of $($_.Name)";
FormatItems($_.ProjectItems);
}
};
}
$dte.Solution.Projects | % {
Write-Host "-- Project: $($_.Name)";
FormatItems($_.ProjectItems)
}
;
Ответ 3
Вы можете использовать CodeMaid, бесплатный плагин для VS2012. Это позволит вам очистить, реорганизовать ваш код. Я всегда использую его, прежде чем проверять свой код с помощью StyleCop
Ответ 4
Вы можете использовать ReSharper Code Cleanup. Похоже, что это может работать сразу на целом решении.
Ответ 5
Здесь другой вариант предыдущих двух ответов, которые пользователи могут найти полезными... определенно, может быть дополнительно улучшен и упрощен. Это не только форматирует файлы .cs
, но также .json
, .cshtml
, .js
и .css
.
function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".cs" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } }
$dte.Solution.Projects | % { f($_.ProjectItems) }
function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".json" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } }
$dte.Solution.Projects | % { f($_.ProjectItems) }
function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".cshtml" ) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } }
$dte.Solution.Projects | % { f($_.ProjectItems) }
function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".js" ) -and (-not $_.Properties.Item("FullPath").Value.Contains("common")) -and (-not $_.Properties.Item("FullPath").Value.Contains("Content")) -and (-not $_.Properties.Item("FullPath").Value.Contains("Scripts")) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } }
$dte.Solution.Projects | % { f($_.ProjectItems) }
function f($projectItems) { $projectItems | ? { $_.Name -ne $null -and $_.Name.EndsWith( ".css" ) -and (-not $_.Properties.Item("FullPath").Value.Contains("common")) -and (-not $_.Properties.Item("FullPath").Value.Contains("Content")) -and (-not $_.Properties.Item("FullPath").Value.Contains("Scripts")) } | % { $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}') ; $win.Activate() ; $DTE.ExecuteCommand('Edit.FormatDocument') } ; if ($projectItems) { $projectItems | % { f($_.projectItems) } } }
$dte.Solution.Projects | % { f($_.ProjectItems) }
Ответ 6
Goto → Инструменты → > Опция → > TextEditor → > XAML → > Форматирование → > Интервал → > Проверка положения каждого атрибута на отдельной линии! Thats it