プロジェクトの参照設定取得

カスタムツールによる自動生成ですが、生成したコードがビルドエラーになるのは困ります。たとえば、クラスにSeasar2.Dao.Attrs.Bean属性を付けるのなら、Seasar.Dao.dllが参照に追加されていなければなりません。なので、現在のプロジェクトの参照設定を取得し、生成するコードを変更する必要があります。
カレントプロジェクトへのアクセス方法は以下の通り。

public class EntityGenerator : BaseCodeGeneratorWithSite {
    VSProject GetCurrentProject() {
        ProjectItem item = this.GetService(typeof(ProjectItem)) as ProjectItem;
        if (item == null)
            return null;

        Project proj = item.ContainingProject;
        if (proj == null)
            return null;

        return proj.Object as VSProject;
    }

    List<string> GetReferences(VSProject proj) {
        List<string> list = new List<string>();
        foreach (Reference3 r in proj.References) {
            list.Add(r.Identity);
        }
        return list;
    }

    protected override byte[] GenerateCode(string inputFileName, string inputFileContent) {
        bool s2Dao = false;

        // カレントプロジェクトを取得
        VSProject proj = GetCurrentProject(); 
        if (proj != null) {
            // 参照アセンブリを取得
            IList<string> list = GetReferences(proj);

            // Seasar.Daoを含むか?
            if (list.Contains("Seasar.Dao"))
                s2Dao = true;                    
        }

        if (s2Dao) {
            // S2Dao用のインタフェースを生成
        }

        ...
    }
}