29

以前のバージョンの Visual Studio では、Kevin Pilch-Bisson のスクリプトを使用して、ソリューション内のすべての C# ファイルをフォーマットしました。

VS2012 はマクロのサポートを削除したため、それは機能しなくなりました。

VS2012 ですべてのドキュメントを簡単にフォーマットするにはどうすればよいですか?

4

6 に答える 6

28

Tools-> Library Package Manager->を開きPackage Manager Console、以下のコマンドを実行します。最後に、すべてのドキュメントが IDE で開かれます。(RAM の少ないマシンでは、大規模なソリューションでは問題が発生します。) 変更されたファイルは IDE で変更され、ディスクには保存されません。すべて保存してから、準備ができたらすべて閉じることができます。

VS2012 では、以前のバージョンの Visual Studio に存在していた VB に似たマクロ言語が削除されました。ただし、基礎となる DTE インターフェイスはまだ存在し、パッケージ マネージャー コンソールで PowerShell 経由でアクセスできます。

に渡される奇妙な GUIDProjectItem.OpenConstants.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) }
于 2013-03-17T06:57:28.760 に答える
11

これは、非常に大規模なソリューションで機能する既存のスクリプトの更新です。

各ファイルを開き、フォーマットしてから、ファイルを開いたままにするのではなく、保存して閉じます。また、「.designer」もスキップします。これらのファイルは通常、そのままにしておく必要があるためです。

最近のバージョンの Visual Studio (2017 年以降) では、スクリプトを ps1 ファイルにコピーし、パッケージ マネージャー コンソールで実行. C:\path\to\the.ps1して呼び出します。(Visual Studio 2012 および 2013 で動作し、パッケージ マネージャー コンソールに直接コピー アンド ペーストします。)

警告:このコードをコンソールに貼り付けると、ソリューション全体のすべての C# ファイルがすぐに開いてフォーマットされ、変更された各ファイルが要求なしに保存されます。最初に分岐するのは良い考えかもしれません...

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)
}
;
于 2014-01-13T18:57:52.900 に答える
2

VS2012の無料プラグインである CodeMaidを使用できます。これにより、コードをきれいにして再編成できます。StyleCopでコードをチェックする前に常に使用します

于 2013-03-17T10:22:34.413 に答える
1

ReSharper の Code Cleanupを使用できます。これは、ソリューション全体で一度に機能するようです。

于 2013-03-17T09:58:41.793 に答える