Проблемы со ссылкой на выходные данные сборки из TFS Build и Visual Studio - PullRequest
0 голосов
/ 07 мая 2010

Вот что я пытаюсь сделать: у меня есть два решения - одно для моего основного приложения и связанных с ним проектов, а другое для моей базы данных (VS .dbproj) и связанных с ним проектов. Что я хотел бы сделать, так это включить выходные данные из проекта базы данных (.dbschema и некоторые сценарии SQL) в мой установщик WiX (который существует в основном решении приложения). Это предполагает, что TFS создаст решение DB непосредственно перед основным прикладное решение. У меня эта часть работает должным образом, но у меня возникают проблемы со ссылкой на вывод решения БД из моего установщика.

Я использую относительные пути для ссылки на выходные данные проекта БД в моем установщике WiX (например, <?define DBProjectOutputDir = "..\..\MyDatabaseSolution\MyDatabaseProject\sql\"?>), который отлично работает локально, но не работает при сборке через сборку TFS. Это связано с тем, что TFS Build, по-видимому, изменяет выходной каталог каждого проекта в одну общую папку. Вместо того, чтобы путь к моему проекту базы данных был ..\..\MyDatabaseSolution\MyDatabaseProject\sql\, как при локальном построении, он устанавливается на что-то вроде ..\..\..\Binaries\Release\. Как я могу обойти это и иметь постоянное выходное местоположение для ссылки из моего проекта установщика? Я использую TFS 2005, VS 2008 и WiX 3.0.

Ответы [ 2 ]

0 голосов
/ 10 мая 2010

После некоторых подробных поисков в списке рассылки WiX я обнаружил, что вы можете сослаться на каталог dir текущего проекта установщика, используя $(var.TargetDir). Так как только в TFS Build выходные данные всех проектов помещаются в один каталог, я смог создать особый случай для сервера сборки, посмотрев переменную среды ComputerName:

<?if $(env.ComputerName) = "MYBUILDSERVER"?>
  <?define DBProjectOutputDir = "$(var.TargetDir)"?>
<?else?>
  <?define DBProjectOutputDir = "..\..\MyDatabaseSolution\MyDatabaseProject\sql\"?>
<?endif?>

Таким образом, DBProjectOutputDir всегда указывает на правильный каталог. Это немного обходной путь, поэтому я все еще ищу лучший подход.

0 голосов
/ 10 мая 2010

Если вы добавите ссылку (на ваше приложение db) в свой проект wix в VS, тогда вы можете использовать следующую переменную, а не относительные пути, и она будет указывать, какая папка сборки в настоящий момент выбрана в вашей конфигурации.

$(var.MyDatabaseProject.TargetDir)

Вот хороший справочник

...