プロジェクトの参照設定取得
カスタムツールによる自動生成ですが、生成したコードがビルドエラーになるのは困ります。たとえば、クラスに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用のインタフェースを生成 } ... } }