(я обновил заголовок, чтобы отразить мои новые выводы)
Я только что портировал несколько проектов с TFS2008 на TFS2010 и столкнулся с (на самом деле несколькими :)) проблемами с конкретным проектом. При компиляции с конфигурацией сборки Debug все работает как положено. Однако при компиляции с конфигурацией сборки 'Release' я получаю ошибку компоновщика, поскольку al.exe не может найти указанный файл в 'obj \ debug'.
Ошибка:
Task "AL" (TaskId:781)
...
ALINK : error AL1047: Error importing file 'c:\Builds\23\...\obj\Debug\someproject.exe' -- The system cannot find the file specified. [C:\Builds\23\...\Release\Sources\...\someproject.csproj]
The command exited with code 1. (TaskId:781)
Done executing task "AL" -- FAILED. (TaskId:781)
Я включил ведение журнала диагностики информации о сборке команды и нашел следующую переменную:
IntermediateOutputPath = obj\Debug\
У меня вопрос: зачем компоновщику искать в папке Debug, когда я собираю его в конфигурации релиза? Я проверил решение и конфигурацию проекта, и в конфигурации релиз-решения нет конфигураций «Отладка». Есть идеи, почему это происходит и как это решить?
Заранее спасибо.
!! Информация о бонусе
У меня есть следующее утверждение в файле проекта, которое не выполняется, гарантируя, что конфигурация сборки не указана, для нее будет задано значение Debug.
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
Я попытался изменить его на Release по умолчанию, и теперь моя сборка команды отладки не удалась, вместо этого указав на obj \ release. Таким образом, кажется, что конфигурация сборки не указана, когда проект компилируется. Как это может быть?