Проект установки Visual Studio Выход Team Build отличается от локальной - PullRequest
1 голос
/ 20 февраля 2012

У меня есть проект установки Visual Studio 2010 (.vdproj), который постоянно ведет себя плохо. В проекте установки есть зависимость, которая включается в установщик, несмотря на мои попытки исключить ее или удалить из файла проекта. Я могу исключить сборку из зависимостей с помощью Visual Studio, затем построить проект, и выходные данные на моем локальном компьютере не будут включать исключенную сборку. Когда я проверяю проект и собираю его с использованием TFS (2008), сборка всегда включается.

Данная сборка относится к числу исключений, которые я исключаю, поскольку они уже включены в проект установки в качестве выходных данных проекта. Таким образом, установщик может получить две копии одной и той же сборки, и если он попытается записать их в одно и то же место, в папку GAC или папку bin , установка завершится неудачно с использованием файла . ошибка.

И часто я обнаруживаю, что при повторном открытии проекта установки флаг Исключить возвращается в false .

Это действительно довольно раздражает и тратит много времени, потому что теперь я использую Orca для загрузки каждой сборки, чтобы убедиться, что дублированные сборки не присутствуют в выходных данных. Есть ли способ решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Проекты установки Visual Studio по сути устарели и давно не видели большой работы.Помимо проблемы, которую вы видите, у них есть много других проблем в сочетании с Team Build.

См .: http://msdn.microsoft.com/en-us/library/ee721500.aspx

Внимание

Будущие версии Visual Studio не будут включать шаблоны проектов установщика Visual Studio.Чтобы сохранить существующие инвестиции клиентов в проекты установщика Visual Studio, Microsoft продолжит поддерживать проекты установщика Visual Studio, поставляемые с Visual Studio 2010, в соответствии со стратегией жизненного цикла продукта.Для получения дополнительной информации см. Расширенная политика поддержки Microsoft для продуктов для бизнеса и разработки.

Посмотрите на Wix в качестве замены для этих проектов .

0 голосов
/ 20 февраля 2012

Я нашел эту страницу на MSDN, в которой есть обходной путь для флага Исключить , который сбрасывается на Ложь :

Ранее исключенные файлы снова включаются при повторном открытии решения

Когда вы исключаете файл из проекта установки, вы можете увидеть, что файл снова включается после закрытия и повторного открытия решения. Это может произойти, если есть две копии одного и того же DLL-файла из двух разных исходных расположений.

Чтобы обойти эту ошибку, измените свойство Copy Local в одном из файлов:

В обозревателе решений щелкните ссылку на DLL, которую вы хотите удалить.

В меню Вид выберите Окно свойств.

Измените свойство Copy Local на False.

К сожалению, это решение не будет работать для меня, потому что проект установки предназначен для веб-сайта ASP.NET, но обходной путь Microsoft задокументирован здесь для дальнейшего использования.

Я думаю, я установил, почему существует зависимость. Веб-сайт ссылается на результаты проекта из ряда проектов. Когда сайт предварительно скомпилирован, указанные сборки проекта собираются и помещаются в папку bin . Затем проект установки идентифицирует их как зависимости, несмотря на то, что проект установки уже включает выходные данные проекта для этих проектов. Причина, по которой я использую выходные данные проекта в проекте установки, состоит в том, что TFS любит проверять библиотеки, содержащиеся в предварительно скомпилированной веб-папке, которая является частью файловой структуры решения. Это иногда приводило к тому, что в итоговом установщике присутствовали старые или неправильные версии DLL.

Обходным решением для меня является редактирование файла TFSBuild.proj и добавление задачи по удалению этих библиотек из предварительно скомпилированного каталога bin . Тогда они не будут определены как зависимости при сборке установщика.

...