VSの便利な機能として、未使用のusing削除および並び替えというものがあります。
参考:usingの並べ替え
しかし、これは単一のドキュメントしか対象にできません。
ソリューション内のドキュメントに対して一括で操作したいと考える方も多いと思います。
え? PowerCommands あるから困らない?アーアー、キコエナイー
ということで、一括で操作を行う方法について記します。
そして、今回は Roslyn CTP - September 2012 を使いたいと思います。
※Roslyn は VB と C# に対応しているため、VB の import に対しても有効です
\ロッズリーン/
はーい!ゆるぷろ、はっじまっるよー
方針としては、
1.ソリューションのパスからドキュメントの一覧を取得
2.そのドキュメント全てに RemoveUnnecessaryImports() と OrganizeImports() を適用
3.適用したドキュメントを上書き保存
の順になります。
以下サンプルです
sample.cs
using System;
using System.IO;
using System.Linq;
using System.Text;
using Roslyn.Services;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
throw new ArgumentException("*.sln path を設定してください");
var path = args.Single();
var solution = Workspace.LoadSolution(path).CurrentSolution;
foreach (var document in solution.Projects.SelectMany(p => p.Documents))
{
var newDocument = document.RemoveUnnecessaryImports().OrganizeImports();
using (var writer = new StreamWriter(document.FilePath, false, Encoding.UTF8))
newDocument.GetText().Write(writer);
}
}
}
}