Заставить VS2010 сохранить абсолютный выходной путь сборки - PullRequest
7 голосов
/ 07 июля 2010

Мы хотим, чтобы наш сервер сборки отправлял вывод каждой сборки на
C:\Projects\{project name}\build\{build configuration}\.

Чтобы выполнить это, я установил свойство пути Build Output для моих проектов в Visual Studio 2010 и собрал локально, чтобы убедиться, что все работает. Когда я это делаю, Visual Studio меняет путь на относительный, например ..\..\build\Debug.

Поскольку каталог проекта не совпадает на сервере сборки (мы используем TeamCity, поэтому в URL проекта есть что-то вроде C: \ BuildAgent \ work \ 9358A92GF92), вывод не заканчивается там, где мы этого хотим.

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

Ответы [ 2 ]

4 голосов
/ 07 июля 2010

Вы не можете убедить IDE сделать ее абсолютной. Возможные решения:

  1. Используйте событие после сборки, чтобы скопировать вывод сборки
  2. Путь не будет относительным, если выходной каталог находится на другом диске. Вы можете использовать команду SUBST для сопоставления буквы диска, например z:, с папкой на c: и таким образом обмануть IDE
  3. Запустите msbuild.exe прямо на сборочном компьютере. Используйте параметр командной строки / p, чтобы задать для свойства OutDir другое значение.

Решение 3, вероятно, является лучшим, поскольку вы можете сделать его специфичным для машины сборки, не вмешиваясь в файлы проекта и усложнив жизнь разработчикам. Команда должна выглядеть примерно так:

 msbuild /p:outdir=c:\mumble\ projectOrSolutionFileName

Помните, что имя выходного каталога должно заканчиваться обратной косой чертой

1 голос
/ 13 января 2012

Вы не можете убедить IDE использовать абсолютный путь, но вы можете изменить файл проекта:

<OutputPath>C:\Dir1\Dir2</OutputPath>

В вашей IDE все равно будет отображаться относительный путь, но он будет хранить абсолютный путь.

Работает для меня с Visual Studio 2010 Sp1

...