Насколько я понял, вы хотели бы выполнять обнаружение / управление версиями с минимальными усилиями.
Почему бы вам не использовать возможности автоматического увеличения AssemblyInfo. Помещение [assembly: AssemblyVersion("1.0.*")]
в AssemblyInfo.cs
будет увеличивать номер сборки с каждой сборкой. Найти больше информации в этот ответ .
После компиляции вы можете определить версию сборки с помощью Функция NAnt assemblyname::get-version
:
assemblyname::get-version(assemblyname::get-assembly-name('MyAssembly.dll'))
Обновление:
Если вы не можете использовать возможности автоматического увеличения информации о сборке, вы можете позволить NAnt создавать AssemblyInfo.cs для каждой сборки, используя NAntContrib's <version>
-task .
<loadtasks assembly="C:\PathToNAntContibTasks\NAnt.Contrib.Tasks.dll" />
<target name="assemblyinfo" description="generates AssemblyInfo.cs">
<property
name="working.dir"
value="C:\src\foo" />
<property
name="build.number.path"
value="${path::combine(working.dir, 'build.number')}" />
<echo
file="${build.number.path}"
message="0.0.0.0"
unless="${file::exists(build.number.path)}" />
<version
buildtype="Increment"
path="${build.number.path}"/>
<foreach
item="File"
property="assemblyinfo.path">
<in>
<items>
<include name="${path::combine(working.dir, '**\AssemblyInfo.cs')}" />
</items>
</in>
<do>
<asminfo output="${assemblyinfo.path}" language="CSharp">
<imports>
<import namespace="System.Reflection" />
</imports>
<attributes>
<attribute type="AssemblyVersionAttribute" value="${buildnumber.version}" />
</attributes>
</asminfo>
</do>
</foreach>
</target>