Почему Tfs2010 разрабатывает мой проект Wix перед чем-либо еще?

Подобный вопрос задали и ответил приблизительно год назад, но был любой другим вопросом (все было в бета-версии), или неправильно диагностировал. Это расположено здесь: задача MSbuild перестала работать, потому что "Любой ЦП" решение создается не в порядке.

Моя проблема - то, что у меня есть wix проект установщика, и после обновления до Tfs2010 в понедельник, сбоев сборки при соединении, потому что это не может найти продукт сборки приложения Wpf в проекте. После некоторого рытья это - потому что это еще не было создано. Создание в Vs2010 работает нормальным. wix проект установлен зависеть от проекта Wpf, и при просмотре Порядка Сборки Проекта в IDE, все смотрит как нормальное.

С проблемой первоначально встретились только с двумя определениями платформы в решении; x86 и x64. Существует также две разновидности, Отладка и Выпуск, и TFSBuild.proj установлен создать все четыре комбинации. Не было никакого происшествия AnyCPU нигде. На вопрос, на который ссылаются, выше, я пытался изменить проект Wpf использовать AnyCPU так, чтобы он был создан сначала. На данном этапе wix проект использовал точную конфигурацию, и проект Wpf использовал разновидность с AnyCPU. Однако выполнение так, казалось, ничего не изменило.

Я использую Tfs2010 RTM, Vs2010 RTM и новую версию Wix, который во время этой записи является 3.5.1602.0 с 02.04.2010. Кто-либо еще сталкивающийся с этим?

2010-04-27: После того, как изрядное количество рытья и репродуцирования на клонированном VM создает машину, я полагаю, что знаю то, что идет и также что перестало работать, но я не вполне знаю, как зафиксировать его.

Ситуация состоит в том, что эта ошибка, кажется, показывает признаки на основе чистого проекта чистой случайности, заказывающего в файле решения. Появляется, как будто файл решения просто вслепую разработает проекты в порядке, они появляются, полагаясь на его способность обнаружить несозданные ссылки и создать их по требованию при необходимости.

В моем конкретном файле решения мой проект Wix был заказан перед моим проектом приложения Wpf. Это привело к проекту Wix, разработанному сначала, и в то время как зависимость от проекта Wpf была обнаружена правильно, фактическая задача MSBuild была пропущена из-за неопределенного $ (BuildProjectReferences) переменная, я упоминаю несколько комментариев вниз из основного сообщения в этом потоке. С многословием MSBuild все еще на диагностике, BuildProjectReferences может рассматриваться как неопределенное здание проект Wix, и это видно определенное как верное после разрабатывания проекта Wpf в задаче разработать проект Wix. Все же, при тестировании это оценивает неопределенный снова, задача пропускается, и сбои сборки Wix, потому что это не может найти вывод сборки несозданного проекта Wpf.

Так нижняя строка: зависимость проекта пропускается из-за плохого $ (BuildProjectReferences) переменная. Интересно, эта переменная присутствует только в файле Wix2010.targets, а не в wix.targets; я предполагаю вот почему, что это просто обнаруживается после того, как я установил Tfs2010 и Vs2010.

Решение: Как я удостоверяюсь, что BuildProjectReferences передан правильно последующим задачам MSBuild? Действительно ли там что-то является особенным с переменным продолжением обзора?

2010-09-14: Ошибка была открыта для этой проблемы в наборе инструментов WiX: http://sourceforge.net/tracker/?func=detail&atid=642714&aid=2990231&group_id=105970 и зафиксированный только что. Хотелось бы надеяться, это больше не проблема. Если так, откройте новую ошибку.


Для обращения к комментарию непосредственно ничто в моем решении не имеет конфигурацию AnyCPU в их файлах типа "build". Я создал конфигурации AnyCPU только для тестирования решения, предложенного потоком, с которым я связался в моем исходном сообщении. После того, как это не работало, я удалил конфигурации AnyCPU снова.

Кроме того, проекты находятся в том же файле решения, однако в папках разного решения (интерфейсная папка, папка установщика), если это имеет значение.

Интересно достаточно я собирался сделать небольшой пример песочницы так, чтобы я мог проиллюстрировать проблему, которую я имел, однако после создания моего крошечного демонстрационного решения, я не мог получить ошибку воспроизвести. Это заставляет меня думать, что, возможно, это - результат использования проекта команды, который был обновлен из проекта команды Tfs2008, а не того, который был создан новый в Tfs2010. Я могу попытаться перейти свой проект в новый для тестирования этой теории, если я не могу выяснить, почему тестовое решение работает.

p.s. также, я плохо знаком с stackoverflow - с какой стати комментарии ограничены в длине, если "ответ Ваш собственный вопрос" рабочий процесс предназначается только для предоставления конкретных ответов?


Таким образом, я бросил многословие сборки до диагностики и прочитал его сегодня, и одна строка в особенности выделилась мне:

Task "MSBuild" skipped, due to false condition; ('@(_ProjectReferenceWithConfiguration)'!='' and '$(BuildingInsideVisualStudio)' != 'true' and '$(BuildProjectReferences)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('..\WpfApp\WpfApp.csproj'!='' and '' != 'true' and '' == 'true' and '..\WpfApp\WpfApp.csproj' != '').

Это было замечено, поскольку мой проект установщика пытался разработать мой wpf проект, так как на wpf проект ссылаются. В частности, по некоторым причинам $ (BuildProjectReferences) оценивает к, '' когда я абсолютно уверен, что это должно быть 'верно'.

Однако ранее в журнале, в начале задачи MSBuild для проекта WpfApp, я видел это:

Task "MSBuild" (TaskId:15)
...
Initial Properties:
...
BuildProjectReferences = true

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

12
задан Community 23 May 2017 в 12:09
поделиться

3 ответа

TFS использует набор свойств для управления именами решений и конфигураций для построения (итерация). Затем для каждой комбинации решения и конфигурации он использует зависимости проекта / порядок сборки, чтобы контролировать порядок сборки проектов. Возможно, что ваши EXE / DLL - это AnyCPU, а ваш WiX - x86, и, хотя WiX зависит от EXE / DLL, x86 создается до вашего AnyCPU. Или, может быть, они даже находятся в разных решениях, поэтому сложно сказать, не глядя на ваш источник, но в основном это работает.

1
ответ дан 2 December 2019 в 05:27
поделиться

Это ошибка, ошибка, ошибка. Не знаю, кто виноват, но вот грязный грязный прием:

  1. Откройте ваш .sln файл в блокноте.
  2. Найдите свои проекты wix в списке проектов.
  3. Вырежьте их и вставьте обратно после того, как будут перечислены все остальные проекты.
  4. Плачь в душе, пытаясь оттереть грязь, но через несколько часов вылезла наружу, натертая и все еще с запахом грязи, цепляющейся за тебя, как с кожи трупа.
18
ответ дан 2 December 2019 в 05:27
поделиться

Мы сначала сообщили об ошибке в wix , а затем нашли ваш вопрос.

Мы решили проблему со своей стороны, заявив, что по умолчанию проект wix будет создавать ссылки. Мы обновили файл C: \ Program Files \ MSBuild \ Microsoft \ WiX \ v3.5 \ wix2010.targets, установив True в проекте, который задает путь. Итак, да, мы сделали это вручную; мы сообщили об ошибке, а также о нашем исправлении.

1
ответ дан 2 December 2019 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: