2015年8月26日水曜日

【Visual Studio】自動生成したコードをプロジェクトに追加する時にエラー

T4Templateなどでファイルを自動生成し、プロジェクトに読み込ませるために
以下のようなコードを実行いたします。

using Microsoft.Build.Evaluation;

Project project = new Project(projectFileName);
if (!project.Items.Any(x => x.ItemType == "Compile" && x.UnevaluatedInclude == generatedFileName))
{
    project.AddItem("Compile", generatedFileName);
    project.Save();
}

ところが、これを同一プロジェクトに対し複数回実行するとエラーとなり
以下のようなメッセージが出ます。


等価なプロジェクト (グローバル プロパティとツール バージョンが同じプロジェクト) がプロジェクト コレクションのパスxxxに既に存在します。 等価なプロジェクトをこのプロジェクト コレクションに読み込むには、最初にこのプロジェクトをアンロードしてください。


ということでアンロードします。

ProjectCollection.GlobalProjectCollection.UnloadProject(project);


(参考)
http://codeyourself.net/microsoft-build-evaluation-project-loading-oddities/

以上メモまで。

0 件のコメント:

コメントを投稿