Я прочитал статью Джона Роббинса TFS 2010 Build Number и версии файла сборки: полностью синхронизирован только с MSBuild 4.0 , и мне интересно, как лучше интегрировать это.
Для загрузки статьи предусмотрено два файла, один из которых является целевым файлом, а другой - файлом proj.
В файле целей есть ряд задач, чтобы очистить номер сборки на основе номера сборки Tfs (тот же, что использовался для сборок) и записать этот номер в какое-то место (назовите его BuildNumberFile) для использования другим проектом. файлы.
Файл proj очень прост. Он просто импортирует вышеупомянутый файл целей, а затем объявляет цель с именем «Все», а также объявляет DefaultTargets для элемента Project как «Все».
<Project ToolsVersion="4.0" DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- The two required properties so the Wintellect.TFSBuildNumber tasks knows your major and minor values.-->
<TFSMajorBuildNumber>3</TFSMajorBuildNumber>
<TFSMinorBuildNumber>1</TFSMinorBuildNumber>
</PropertyGroup>
<Import Project="Wintellect.TFSBuildNumber.targets"/>
<!-- Just ask for the version information files you need. These are here to show all the diffent ones in
Wintellect.TFSBuildNumber.Targets. You can change the names -->
<Target Name="All"
DependsOnTargets="WriteSharedCSharpAssemblyVersionFile;
WriteSharedVBAssemblyVersionFile;
WriteSharedCPPCLIAssemblyVersionFile;
WriteSharedCPPAssemblyVersionFile;
WriteSharedWiXAssemblyVersionFile;
WriteSharedTextAssemblyVersionFile;"/>
</Project>
У меня есть два вопроса по этому поводу:
- Я все еще изучаю MSBuild. Если имя цели не указано в другом месте цели, выполняется ли цель? Как мне убедиться, что эта цель запущена?
- Должны ли файлы csproj объявлять элемент Include для расположения, где находится BuildNumberFile, даже если он не существует до времени компиляции?
- Имеют ли ItemGroups и Include объекты DependsOnTargets или что-то такое, что позволяет им убедиться, что файл существует до их сборки?
- Все ли содержимое файла csproj, использующее это, должно быть обернуто в цель, которая выражает DependsOnTargets для BuildNumberFile?
Спасибо!