Нарушение общего доступа, когда несколько проектов ссылаются на библиотеку в msbuild

Я столкнулся с проблемой с msbuild. У меня есть три уровня файлов проекта. Самые низкие создают библиотеки, некоторые из которых не зависят от языка, а некоторые - от языка. Следующий уровень создает проект, который объединяет в продукте библиотеки, не зависящие от языка, с библиотеками для конкретного языка. На последнем уровне продукт собирается несколько раз для разных языков.

Проблема, с которой я сталкиваюсь, состоит в том, что библиотека, не зависящая от языка, собирается несколько раз, и когда я вызываю msbuild с флагом / m, я получаю нарушения совместного доступа во время сборки, так как несколько потоков заканчивают собирать проект, независимый от языка. Мне сказали, что если я использую параметр RemoveProperties в задаче MSBuild, чтобы все свойства совпадали, msbuild соберет проект только один раз. Я пытался сделать это, но не смог заставить проект построить только один раз. Я просмотрел журнал диагностики и создал собственный регистратор, чтобы попытаться выяснить, какие свойства добавить в параметр RemoveProperties.

Мой вопрос заключается в том, как msbuild решает, что два вызова одного и того же файла проекта одинаковы и должны быть собраны только один раз. На основании информации, переданной в событие OnProjectStarted моего пользовательского регистратора, все глобальные свойства одинаковы. Есть ли что-то еще, что мне нужно сделать матч?

0 ответов

Другие вопросы по тегам