Макросы и выходные данные с использованием агентов сборки для Visual Studio 2010 - PullRequest
2 голосов
/ 11 февраля 2011

Я пытаюсь заставить команду строить и строить агентов, работающих для нашего приложения в первый раз. Я столкнулся с несколькими проблемами, связанными с настройками нашего проекта, которые не очень хорошо работают с агентами сборки, которые я пытаюсь очистить. Однако я хотел бы спросить о проблемах, которые я «обнаружил», об агентах сборки и о том, как они работают, чтобы узнать, прав ли я, или я просто упускаю очевидные вещи, которые облегчили бы задачу. Итак, вот то, что я до сих пор затронул, пожалуйста, скажите мне, если я прав, или поправьте меня, где я неправ:

1) Агенты сборки изменяют макросы $ (Outdir), чтобы отправлять все в двоичные файлы. Это означает, что если у нас были проекты, отправляющие наши выходные данные в пользовательскую папку, такую ​​как .... \ bin, и шаг посткомпоновки, который ссылается на .... \ bin, шаг посткомпоновки завершится неудачно, потому что на агенте компоновки выход выиграл ' быть в мусорном ведре. Теперь мы должны использовать шаг после сборки, чтобы скопировать из $ (Outdir) в .... \ bin, чтобы получить результат там, где мы хотим.

2) Вывод Linker-> General-> Register не работает для сборки x64 на любом компьютере, так как он кажется недостаточно умным, чтобы использовать system32 regsvr32 для x64, и вместо этого пытается использовать 32-битную версию.

3) Linker-> General-> Register Output не работает для сборки Win32 на агенте сборки, потому что он недостаточно умен, чтобы использовать папку $ (Output) и вместо этого пытается зарегистрировать файл из. \ $ ( Платформа) \ $ (Конфигурация) \ filename.dll, но файл отсутствует в агенте сборки.

Чтобы решить вопросы 2 и 3, я перешел к использованию шага регистрации после сборки для регистрации наших dll, поэтому либо:

c:\windows\syswow64\regsvr32.exe  $(TargetPath) //32 bit
c:\windows\system32\regsvr32.exe  $(TargetPath) //64 bit  

Я хотел бы найти макрос для замены syswow64 и system32, который будет использовать правильный код в зависимости от платформы, чтобы сделать эти строки одинаковыми (я предпочитаю, чтобы шаги после сборки были одинаковыми для всех платформ и конфигураций, так же как возможно) но пока не могу найти.
Я считаю невозможным поверить в то, что не было бы макроса $ (SystemFolder) или чего-то подобного, может кто-нибудь сказать мне, если он есть, и где / что это такое?

Кроме того, есть ли другие подобные скрытые проблемы, с которыми я могу столкнуться? Спасибо за вашу помощь.

...