以下のようなコードを実行いたします。
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 件のコメント:
コメントを投稿