В предыдущих версиях Visual Studio я использовал Kevin Pilch-Bisson script для форматирования всех файлов С# в моем решении.
VS2012 опустил поддержку макросов, так что больше не работает.
Как я могу легко форматировать все мои документы в VS2012?
В предыдущих версиях Visual Studio я использовал Kevin Pilch-Bisson script для форматирования всех файлов С# в моем решении.
VS2012 опустил поддержку макросов, так что больше не работает.
Как я могу легко форматировать все мои документы в VS2012?
Откройте Инструменты → Диспетчер пакетов библиотек → Консоль диспетчера пакетов и выполните приведенную ниже команду. В конце все документы будут открыты в среде 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) }
Здесь обновляется существующий 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)
}
;
Вы можете использовать CodeMaid, бесплатный плагин для VS2012. Это позволит вам очистить, реорганизовать ваш код. Я всегда использую его, прежде чем проверять свой код с помощью StyleCop
Вы можете использовать ReSharper Code Cleanup. Похоже, что это может работать сразу на целом решении.
Здесь другой вариант предыдущих двух ответов, которые пользователи могут найти полезными... определенно, может быть дополнительно улучшен и упрощен. Это не только форматирует файлы .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) }
Goto → Инструменты → > Опция → > TextEditor → > XAML → > Форматирование → > Интервал → > Проверка положения каждого атрибута на отдельной линии! Thats it