Различное поведение для Visual Studio Build зависит от того, встроен ли он в IDE или из командной строки? - PullRequest
1 голос
/ 04 декабря 2010

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

У нас есть несколько версий нашего продукта. Он содержит COM-объекты, которые должны быть зарегистрированы. Эта регистрация COM выполняется с помощью пакетного файла, вызываемого на этапе пользовательской сборки в соответствующем проекте.

Проблема заключается в том, что если разработчик запускает автоматическую сборку для одной версии из командной строки в фоновом режиме при работе с другой версией в IDE, то автоматическая сборка регистрирует объекты COM из версии, над которой не работала в IDE .

Итак, есть ли способ контролировать, происходит ли регистрация в зависимости от того, выполняется ли сборка в IDE или из командной строки с использованием devenv?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 июля 2011

Вот, возможно, более простой подход: перенесите свои долгосрочные фоновые сборки на другую машину. Если у вас нет бюджета на другую физическую машину (как можно дешевле), сделайте это на виртуальной машине. Есть свободные хосты VM там. Мне повезло с VMWare Server, работающим на моем рабочем столе. Вам понадобится достаточно места на диске и памяти, но оба они довольно дешевы.

0 голосов
/ 20 июля 2011

Я не знаю, что VS "знает", как он работает. Я был бы удивлен, если бы не было чего-то, что помечает, запускается ли это из командной строки или нет, однако у нас может не быть к этому никакого доступа.

Возможно, это можно решить с помощью конфигурации сборки. При сборке из командной строки задайте для параметра конфигурации сборки значение, которое исключает шаг регистрации COM. Я думаю, что вы должны быть в состоянии написать в пакетную сборку тестов для соответствующей конфигурации сборки (я почти уверен, что VS имеет значение макроса сборки для текущей конфигурации сборки) и соответствующим образом ветвиться в логике. Конечно, это означает, что каждый разработчик должен знать об этом. Хотя вы можете создать пакетный файл в проекте для выполнения этих сборок, который включает необходимые параметры сборки / значения.

Мне интересно, каков ваш сценарий, когда один разработчик создает одно и то же приложение двумя различными способами одновременно.

...