Я создал задачу в наших проектах C # для проектов автоматической версии, когда они создаются (изменения вносятся) в режиме выпуска. Версионная часть работает отлично. Тем не менее, все проекты строятся независимо от того, действительно ли проект изменился, когда это было сделано из командной строки. Это приводит к тому, что проекты не требуют версий. Сборка в Visual Studio работает, неизмененные проекты не создаются, однако мы создали инструмент для автоматической сборки с использованием msbuild.exe и используем это как временное исправление, пока работаем над Bamboo, и этот метод всегда выполняет слепую сборку, даже если нет изменений в проекте. Мне нужно иметь возможность определить, были ли внесены изменения в проект.
Что-то вроде
'$ (wasSourceUpdated)' == 'true' или какое-то целевое условие для использования в моей пользовательской цели управления версиями.
Вот пример моего задания по управлению версиями в наших проектах
<Import Project="..\..\DXT.BuildTasks\Targets\DXTAutoIncrementVersion.targets" Condition="Exists('..\..\DXT.BuildTasks\Targets\DXTAutoIncrementVersion.targets') And '$(Configuration)|$(Platform)' == 'Release|AnyCPU' And '$(DeployOnBuild)' != 'true'" />
Я также проверил это и это статьи безрезультатно.
EDIT
Мне нужно, чтобы задание было выполнено до фактического выполнения сборки, чтобы пометить сгенерированные сборки новыми версиями
РЕДАКТИРОВАТЬ 2
Что я действительно ищу, так это условие для запуска CoreCompile или для запуска CoreCompile снова, когда я обнаружу, что сборка была обновлена
Что я пробовал до сих пор:
<Project>
<PropertyGroup>
<RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<_AssemblyTimestampBeforeCompile>%(IntermediateAssembly.ModifiedTime)</_AssemblyTimestampBeforeCompile>
</PropertyGroup>
<PropertyGroup>
<_AssemblyTimestampAfterCompile>%(IntermediateAssembly.ModifiedTime)</_AssemblyTimestampAfterCompile>
</PropertyGroup>
<PropertyGroup>
<_ProjectVersioned Condition="'$(_ProjectVersioned)'==''">false</_ProjectVersioned>
</PropertyGroup>
<Target Name="IncrementVersionBeforeBuild" AfterTargets="CoreCompile" Condition="'$(_AssemblyTimestampBeforeCompile)'!='$(_AssemblyTimestampAfterCompile)' and '$(_ProjectVersioned)' == 'false'">
<Message Text="Before $(_AssemblyTimestampBeforeCompile) After $(_AssemblyTimestampAfterCompile)" Importance="High"/>
<IncrementVersion
ProjectPath="$(MSBuildProjectFullPath)"
VersionRule="3.3.0.+"
FileName="Properties\AssemblyInfo.cs">
</IncrementVersion>
</Target>
<PropertyGroup>
<TaskPath>$(MSBuildThisFileDirectory)..\Tasks\AutoVersionTask\AutoVersionTask\bin\Debug</TaskPath>
</PropertyGroup>
<!-- Sample import for projects
<Import Project="..\..\DXT.BuildTasks\Targets\DXTAutoIncrementVersion.targets" Condition="Exists('..\..\DXT.BuildTasks\Targets\DXTAutoIncrementVersion.targets') And '$(Configuration)|$(Platform)' == 'Release|AnyCPU' And '$(DeployOnBuild)' != 'true'" />
-->
<UsingTask AssemblyFile="$(TaskPath)\AutoVersionTask.dll" TaskName="AutoVersionTask.IncrementVersion" />
<PropertyGroup>
<_ProjectVersioned>true</_ProjectVersioned>
</PropertyGroup>
Заранее спасибо