Подтвердить что ты не робот

Как отформатировать все файлы в Visual Studio 2012?

В предыдущих версиях Visual Studio я использовал Kevin Pilch-Bisson script для форматирования всех файлов С# в моем решении.

VS2012 опустил поддержку макросов, так что больше не работает.

Как я могу легко форматировать все мои документы в VS2012?

4b9b3361

Ответ 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