2011-01-18 5 views
3

おはようございます。 msbuildで私を助けてください。C#のMicrosoft.Build.Evaluation.Projectの並列ビルドを実行してください。

Microsoft.Build.Evaluation.Projectの配列に多数のcsprojがロードされています。私はプロジェクトで同じプロパティを変更しました。私のプロジェクトの並列ビルドをどのように実行するのですか?

多くのスレッドでproject.Build()を実行すると、例外が発生しました"ビルドが既に進行中であるため、操作を完了できません。"

私はプロパティを変更したので、ディスクにプロジェクトを保存することはできません。

+0

それについての解決方法はありますか? – Kiquenet

+0

"some"プロパティを変更しましたか? – roundcrisis

答えて

1

プロセスごとに1つのBuild()関数しか呼び出すことはできません。したがって、すべてのBuild()呼び出しを同期させる必要があります。次のようなものがあります:

static class ProjectBuildSync 
{ 
    private static readonly object _syncObject = new object(); 
    public static bool Build(Project project) 
    { 
     lock (_syncObject) 
      return project.Build(); 
    } 
} 

... 
ProjectBuildSync.Build(project); 
... 
関連する問題