Запустите параллельную сборку Microsoft.Build.Evaluation.Project из C # - PullRequest
3 голосов
/ 18 января 2011

Доброе утро. Пожалуйста, помогите мне с msbuild.

У меня есть много загруженных csproj в массиве Microsoft.Build.Evaluation.Project. Я изменил те же свойства в проектах. Как запустить параллельную сборку моих проектов?

Когда я запускаю project.Build () во многих потоках, я получаю исключение "Операция не может быть завершена, потому что сборка уже выполняется." Я не могу сохранить проекты на диск, потому что я изменяю свойство, которое нужно только для меня.

1 Ответ

1 голос
/ 18 июля 2013

Вы можете вызывать только одну функцию 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);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...