Настройка событий после сборки в Visual Studio - PullRequest
0 голосов
/ 19 ноября 2008

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

copy $ (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%

Есть идеи ?? Конечно, есть способ настроить макросы напрямую ??

1 Ответ

1 голос
/ 06 октября 2009

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

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

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

Теперь в файле проекта найдите цель «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

...