以前のバージョンの Visual Studio では、Kevin Pilch-Bisson のスクリプトを使用して、ソリューション内のすべての C# ファイルをフォーマットしました。
VS2012 はマクロのサポートを削除したため、それは機能しなくなりました。
VS2012 ですべてのドキュメントを簡単にフォーマットするにはどうすればよいですか?
以前のバージョンの Visual Studio では、Kevin Pilch-Bisson のスクリプトを使用して、ソリューション内のすべての C# ファイルをフォーマットしました。
VS2012 はマクロのサポートを削除したため、それは機能しなくなりました。
VS2012 ですべてのドキュメントを簡単にフォーマットするにはどうすればよいですか?
Tools-> Library Package Manager->を開きPackage Manager Console、以下のコマンドを実行します。最後に、すべてのドキュメントが IDE で開かれます。(RAM の少ないマシンでは、大規模なソリューションでは問題が発生します。) 変更されたファイルは IDE で変更され、ディスクには保存されません。すべて保存してから、準備ができたらすべて閉じることができます。
VS2012 では、以前のバージョンの Visual Studio に存在していた VB に似たマクロ言語が削除されました。ただし、基礎となる DTE インターフェイスはまだ存在し、パッケージ マネージャー コンソールで PowerShell 経由でアクセスできます。
に渡される奇妙な GUIDProjectItem.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) }
これは、非常に大規模なソリューションで機能する既存のスクリプトの更新です。
各ファイルを開き、フォーマットしてから、ファイルを開いたままにするのではなく、保存して閉じます。また、「.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)
}
;
VS2012の無料プラグインである CodeMaidを使用できます。これにより、コードをきれいにして再編成できます。StyleCopでコードをチェックする前に常に使用します
ReSharper の Code Cleanupを使用できます。これは、ソリューション全体で一度に機能するようです。