LoginSignup
11
11

More than 5 years have passed since last update.

ソリューション内のドキュメント全てを対象に未使用のusing削除および並び替えをする

Last updated at Posted at 2013-02-06

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);
            }
        }
    }
}
11
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11