Нужна помощь с TFS2010 + автоматизированная сборка + «Конфигурации для сборки = отладка» - PullRequest
2 голосов
/ 01 июля 2010

действительно.странно.shiz.

Когда я делаю TFS Team BuildRemote Deploy), некоторые #if DEBUG директивы препроцессора код, который я имею на веб-странице, не вызывают.Когда я вручную one-click deploy (remote deploy), код preprocessor directive работает.Когда я отлаживаю локально, код также работает.

Итак, проблема, похоже, связана с моими настройками конфигурации для Build Template, который у меня есть (я думаю ??).Итак, вот что у меня есть: -

альтернативный текст http://img256.imageshack.us/img256/4070/59603294.png

Ничего слишком сложного.Это говорит ... Пожалуйста, добрый компилятор.Создайте мой проект (читай: проект, НЕ решение) в режиме «DEBUG».

У меня следующий код: -

#if DEBUG
    Log.Debug("We are in DEBUG mode.");
#else
    Log.Debug("We are _NOT_ in DEBUG mode.");   
#endif

Так что, когда этот код (ввызывается некоторая страница aspx), она выводит «Мы находимся в режиме отладки».когда он

  • Localhost (Конфигурация Localhost: отладка)
  • Удаленный сервер с Руководство Повторное развертывание одним щелчком (Конфигурация Localhost: Отладка)

Но не тогда, когда я позволил включить непрерывную интеграцию TFS.

FML.

Я пытался выяснить, была ли это ситуация CASING (то есть #if debug или #if Debug)но он все еще не работает.

Затем я даже попытался явно сообщить MSBuild о конфигурации ....

alt text http://img294.imageshack.us/img294/9970/75495143.png

Все еще нет любви.

Ой ... но это пробка!У меня ТАКЖЕ есть некоторые преобразования web.config

  • web.config
  • web.debug.config
  • web.release.config

... и можете ли вы угадать, какой файл получает преобразованный ??Победитель, если вы угадали web.debug.config для всех сценариев ... даже сборка команды, которая содержит ошибки в коде!Так что это похоже на процесс сборки и рабочий процесс знает, что это DEBUG конфигурация .. kewl!но скомпилированный код этого не делает

Наконец, изменение debug="true" или debug="false" не имеет значения.

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

Пожалуйста, помогите!

ПРИМЕЧАНИЕ: я больше не могу принимать пожертвования для самой маленькой скрипки в мире - мне уже дали много.Ура :) 1083 *

Ответы [ 2 ]

6 голосов
/ 05 июля 2010

Ну, я нашел ответ, но я не слишком доволен этим.Я сделаю видео об этой ошибке и отправлю ее по почте Вишалу @ MS ... чтобы узнать, что он думает:)

В любом случае, если вы внимательно посмотрите на конфигурацию по умолчанию везде именно это ...

DEBUG | Any Cpu

альтернативный текст http://img202.imageshack.us/img202/9196/70272059.png

ничего необычного там нет ...

Теперь, когда я меняюплатформа до AnyCpu (обратите внимание, как я убрал пробел ....) теперь он работает нормально.

например ..

альтернативный текст http://img19.imageshack.us/img19/2548/45461348.png

Что сделаноя подумал об этом, когда я проверил файл .proj ... .. вот фрагмент этого ....

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.30729</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
... snip for brevity ...
    <SccProvider>SAK</SccProvider>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
... snip for brevity ...
    <DesktopBuildPackageLocation />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
... snip for brevity ...          
    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>

так что да .. я исправил это, но я не уверен, еслиэто приемлемо или просто случайность.Мне нужно получить реальные ответы от команды MS:)

2 голосов
/ 20 октября 2011

Я могу подтвердить это поведение, а также обходной путь. Похоже, что VS2010 автоматически удалит пространство, когда а) сохранит значение Platform в файлах решения / проекта или б) удалит его, когда вызовет MSBuild.

В любом случае, механизм сборки TFS не следует этому шаблону, и крайне важно удалить пространство вручную, если вы выбираете конкретные значения Platform | Configuration.

Что интересно, диалоговое окно определения сборки TFS позволяет вам ввести только конфигурацию. Он будет жаловаться, но затем примет ввод. Преимущество этого подхода заключается в том, что файл Microsoft.Common.targets изящно обрабатывает пустое входное значение платформы, по умолчанию устанавливая значение «AnyCPU».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...