Управление версиями CommonAssemblyInfo.cs и MSBuild - PullRequest
3 голосов
/ 28 мая 2010

Итак, у меня есть файл CommonAssemblyInfo.cs, связанный со всеми проектами в моем решении и динамически генерируемый моими сценариями rake / albacore, который не проверяется в управлении исходным кодом.

У меня также есть CommonAssemblyInfo.cs.local для использования, когда нет доступного ruby, в основном для использования разработчиками.

Возможно ли иметь задачу msbuild или что-то, что выполняется перед любой другой компиляцией проекта, которая скопирует CommonAssemblyInfo.cs.local в CommonAssemblyInfo.cs перед попыткой скомпилировать мое решение? Я ненавижу иметь команду, о которой нужно просто знать и набирать, чтобы открыть и построить решение в Visual Studio.

UPDATE Поэтому я использовал пакетный файл в качестве события предварительной сборки для всего решения, как описано здесь: Событие предварительной сборки для всего решения? , он проверяет, существует ли CommonAssemblyInfo.cs, а если нет, копирует CommonAssemblyInfo. cs.local в CommonAssemblyInfo.cs просто с помощью простого пакетного файла.

Ответы [ 2 ]

3 голосов
/ 13 июля 2010

Это решение, которое я выбрал.

У меня есть каждый проект в ссылке на решение для CommonAssemblyInfo.cs, который автоматически генерируется для меня сценариями сборки (rake + albacore).

Поскольку я не могу проверить CommonAssemblyInfo.cs в системе контроля версий, я создаю CommonAssemblyInfo.cs.local.

Простое решение: создайте go.bat, который копирует CommonAssemblyInfo.cs.local в CommonAssemblyInfo.cs, которые должны запускаться разработчиками при первой проверке проекта перед открытием решения в VS.

По чисто политическим причинам, если бы я сделал это, у людей были бы шокирующие мысли о том, что я делаю "нестандартные" вещи. Комплексное решение следующее:

Я создал проект в решении под названием PreBuild, от которого зависит каждый проект в решении. Это заставляет порядок сборки быть таким, что этот проект создается первым. Этот проект содержит событие предварительной сборки, которое вызывает следующий пакетный файл:

echo verifying CommonVersionInfo.cs exists
cd
IF NOT EXIST ..\..\..\CommonAssemblyInfo.cs COPY ..\..\..\CommonAssemblyInfo.cs.local ..\..\..\CommonAssemblyInfo.cs

Так что теперь любой разработчик, который решил держать голову в песке, может проверить проект и открыть его в VS, не подозревая, что какие-либо сценарии сборки существуют вообще.

0 голосов
/ 28 мая 2010

Вы говорите о компиляции в VS IDE или компиляции через групповую сборку? Если вы говорите о сборке команды, то вы можете использовать событие «AfterGet» как место для использования стандартной задачи «копировать» msbuild. Если вы говорите о VS IDE, то вы все равно можете использовать задачу «копировать» msbuild.

...