Как передать версию сборки проекта Visual Studio другому проекту для использования в событии после сборки?

У меня есть решение с 2 проектами:

  • Мое приложение 1.2.54 (C# WinForms)
  • My Application Setup 1.0.0.0 (настройка WiX)

Я хотел бы добавить событие после сборки в проект установки WiX, чтобы запустить пакетный файл и передать ему параметр командной строки номера версии сборки Моего приложения. Код может выглядеть примерно так:

CALL MyBatchFile.bat "$(fileVersion.ProductVersion($(var.My Application.TargetPath)))"

Но это приводит к следующей ошибке:

Необработанное исключение: выражение "" ". Моё приложение" не может быть оценено. Метод 'System.String.My Application' не найден. C:\My Application\My Application Setup\My Application Setup.wixproj

Ошибка: выражение "" ".My Application" не может быть оценено. Метод 'System.String.My Application' не найден. C:\My Application\My Application Setup\My Application Setup.wixproj

Я хотел бы иметь возможность передать "1.2.54" в MyBatchFile.bat как-то.

1 ответ

Решение

В вашем файле проекта Wix (*.wixproj) переопределить AfterBuild цель для вызова вашего командного файла:

<Target Name="AfterBuild">
  <!-- Get "My Application" assembly version -->
  <GetAssemblyIdentity AssemblyFiles="../my_assembly_dir/MyAssembly.dll">
    <Output TaskParameter="Assemblies" ItemName="AssemblyIdentity"/>
  </GetAssemblyIdentity>

  <Exec Command="MyBatchFile.bat %(AssemblyIdentity.Version)"/>
</Target>
Другие вопросы по тегам