Сборка MSI из TFS Build - PullRequest
       32

Сборка MSI из TFS Build

0 голосов
/ 06 марта 2012

Я пытаюсь собрать MSI-файлы в сборке TFS, передавая файл DEVENV.exe (поскольку MSBUILD не поддерживает VSPROJ). В любом случае, мой первый проект установщика работает нормально, второй не удается. Если я изменяю порядок, происходит то же самое (то есть ошибка не следует за проектом). Глядя на вывод, я получаю следующие ошибки:

Deserializing the project state for project '[MyProject].dbproj'
[MyProject].dbproj : error  : Error HRESULT E_FAIL has been returned from a call to a COM component.

Также я получаю:

Package 'Microsoft.VisualStudio.TestTools.TestCaseManagement.QualityToolsPackage, Microsoft.VisualStudio.QualityTools.TestCaseManagement, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' failed to load

Похоже, что первая сборка пытается сериализовать проект БД (и говорит, что он успешен, но нигде нет файла DBML). Затем вторая сборка пытается десериализовать проект БД и завершается неудачей.

Я попытался сбросить настройки env (используя флаг / resetusersettings), а также флаг / resetskippkgs. Ничего не работает.

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 08 марта 2012

Когда вы отправляете в DevEnv, вы создаете этот конкретный проект (файл .vdproj) или вы создаете решение? Похоже, VS пытается открыть решение на компьютере сборки, а системы базы данных и тестового проекта нет.

Рассматривали ли вы перенос вашего установочного проекта на WiX?

3 голосов
/ 06 марта 2012

Начните просто.Если вы не хорошо разбираетесь в проблеме, которую пытаетесь решить, обычно лучше попробовать ее «вручную», прежде чем запускать ее как часть сборки TFS.RDP в сервер сборки и попробуйте запустить необходимые команды в командной строке и посмотреть, что произойдет.Вы даже можете пойти проще, чем это, и RDP в сборочную машину, загрузить Visual Studio и собрать ее.

Суть в том, что если вы не можете собрать его в Visual Studio или в командной строке, вызвав devenv.exe, он не будет работать как часть сборки команды.

Я использую приведенную ниже задачу Exec, чтобы точно выполнить то, что вы делаете, как часть сборки TFS.Так что я знаю, что это работает.Ваша платформа и конфигурация могут отличаться в зависимости от того, что вы создаете.Приятно то, что у вас будет файл журнала в C: \ Temp \ MSIBuildOutputLog.txt, который вы можете анализировать на наличие дополнительных ошибок и информации.

<Exec Command="&quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe&quot; &quot;$(PathToSolution)\solution.sln&quot; /Build &quot;Release|Mixed Platforms&quot; /out &quot;C:\Temp\MSIBuildOutputLog.txt&quot;" />

Одна важная вещь, которую стоит отметить ... В VS2010 есть ошибка, которая приводит к сбою генерации MSI при попытке запустить его из командной строки с помощью devenv.exe .Это заняло у меня несколько дней, чтобы найти и выяснить, но вам нужно это исправление.Работал как шарм ... http://archive.msdn.microsoft.com/KB2286556

0 голосов
/ 09 марта 2012

Возможно, было бы лучше и быстрее принять WIX (Windows Installer XML), технологию, которую MS рекомендует теперь использовать в среде VS / MSBuild / TFSBuild для создания MSI.

Относительно легко настроить и интегрировать в ваши решения VS.Он использует файлы на основе XML для описания ваших MSI и использует эти файлы для создания ваших MSI при компиляции.

Я бы начал с загрузки Wix из http://wix.codeplex.com/

После установки вы сможетеиспользовать интеграцию VS2010 проектов на основе Wix для создания MSI.Чтобы быстро начать работу, просто добавьте новый проект Wix в свое решение и укажите ссылки на проекты, результаты которых вы хотите объединить в MSI.Затем вы можете запустить инструмент под названием «Heat», который входит в набор инструментов Wix для генерации XML-файлов путем сканирования ваших проектов.

Как только у вас появятся эти XML-файлы, добавьте их в ваш проект Wix и скомпилируйте.

0 голосов
/ 09 марта 2012

На самом деле, это проекты развертывания, которые не поддерживают msbuild. Кстати, это все устарело в следующем выпуске Visual Studio, так что вы можете захотеть начать смотреть InstallShield Limited Edition и / или установщик Windows XML прямо сейчас, прежде чем тратить слишком много времени на тупиковую, сломанную технологию. Обе эти альтернативы имеют надлежащую поддержку MSBuild, а также многие другие улучшения.

...