У меня есть решение Visual Studio 2012 C#, которое содержит около 15 .csproj
проектов.Visual Studio 2012 C# решение, состояние параллельной сборки гонки
В каждом проекте используется общий файл foo/bar.cs
, который создается до запуска сборки.
Я пробовал различные подходы:
- предварительно построить события
- настройки MSBuild в
BeforeBuild
цели
Построение каждого проекта индивидуально работает отлично. Но как только я использую «Build Solution», я сталкиваюсь с состоянием гонки: из целей пытается скомпилировать foo/bar.cs
, пока он воссоздается другой целью.
В этот момент я понял, что использование «Build Solution» порождает один процесс MSBuild.exe
для каждого проекта в решении. Я думаю, что это делает void мои попытки генерировать foo/bar.cs
раз и навсегда, прежде чем начинать строить проекты.
Возможно, я что-то упустил? Есть ли такой подход, который позволит достичь «генерировать foo/bar.cs
, прежде чем строить все?
Возможно, файл можно разместить в одном общем проекте библиотеки и иметь ссылку на 15 проектов в этой библиотеке? Таким образом вам нужно включить эту команду генерировать в свой проект библиотеки. –
Я бы сделал проект с выходом foo/bar.cs, а затем другие проекты зависели от этого проекта ... или превратили его в библиотеку (так как это выглядит семантически, что вы пытаетесь сделать в любом случае). – IdeaHat
Это немного сложнее, чем «положить это в библиотеку», к сожалению. Наличие другого проекта, который ничего не делает, кроме настраиваемой цели «Build», заманчиво. Я буду следить за этим –