Настройка событий после сборки в Visual Studio

Есть ли способ настроить макросы событий после сборки, я хотел бы переместить новую сборку в подпапку в том же каталоге, имя которого соответствует версии сборки, т.е.

копировать $(TargetDir)$(TargetFileName) $(TargetDir)$(ASSEMBLYVERSION)\$(TargetFileName)

Однако такого «макро» нет. Типа создания исполняемого файла, чтобы получить такую ​​​​версию

call foo.bat $(TargetName)

Где у нас есть foo.bat, оценивающий версию цели, вызывая управляемое приложение, которое печатает версию сборки, которую вы передаете, скажем, GetVersion.exe

for /f %%t in ('GetVersion.exe %1') do (
        set _version=%%t
    )
echo %_version%

Любые идеи?? Наверняка есть способ настроить макросы напрямую??


person Community    schedule 19.11.2008    source источник


Ответы (1)


Не уверен, что это можно сделать с помощью сценария после сборки, но вы можете изменить файл проекта, чтобы сделать то же самое.

Щелкните правой кнопкой мыши проект и выберите «Выгрузить проект».

Затем щелкните правой кнопкой мыши еще раз и выберите «Редактировать проект».

Теперь в файле проекта найдите цель «AfterBuild». Обычно он находится внизу файла и закомментирован.

Раскомментируйте его или просто вставьте следующее:

<Target Name="AfterBuild">
  <GetAssemblyIdentity AssemblyFiles="path\to\bin\$(Configuration)\$(OutputName).dll">
    <Output TaskParameter="Assemblies" ItemName="AssemblyVersion"/>
  </GetAssemblyIdentity>

  <Copy 
    SourceFiles="path\to\bin\$(Configuration)\$(OutputName).dll" 
    DestinationFiles="path\to\bin\$(Configuration)\%(AssemblyVersion.Version)\$(OutputName).dll" />
</Target>

Наконец, снова щелкните правой кнопкой мыши проект и выберите «Обновить проект».

Возможно, вам придется повозиться с именами переменных и, возможно, создать папку перед копированием в нее. Надеюсь, это поможет.

Идея взята из номера версий автоматического установщика для WiX

person Cameron MacFarland    schedule 06.10.2009
comment
Спасибо, это было полезно для меня! - person Charles Ouellet; 17.12.2009