«AnyCPU» против «любого процессора» в TFS 2010 - PullRequest
25 голосов
/ 02 июня 2010

Я потратил много часов, пытаясь понять, почему мой проект собирается с конфигурацией по умолчанию (пустой) на TFS2010, но говорит мне, что нет пути вывода, если я его установлю.

В итоге я понял, что в файле .csproj конфигурация записывается как AnyCPU, тогда как для TFS предлагаемое раскрывающееся значение равно Any CPU (обратите внимание на пробел).

Я удалил пробел в конфигурации TFS, и он заработал.

Проект был конвертирован из версии VS2008. MS изменила имя конфигурации для версии VS2010? Может кто-нибудь сказать мне, что происходит?

Ответы [ 3 ]

20 голосов
/ 18 ноября 2010

Кажется, это известная ошибка в VS2010.
Подробнее см. http://connect.microsoft.com/VisualStudio/feedback/details/503935/msbuild-inconsistent-platform-for-any-cpu-between-solution-and-project.

Что я нашел:

Все файлы проекта в решении имеют платформу, установленную на «AnyCPU», даже если вы выбрали «Любой ЦП» в окне конфигурации. Так что, если вы строите это решение в VS, все работает нормально. Когда вы пытаетесь выполнить сборку с использованием платформы TFS «Любой процессор», решения работают нормально, но необходимо настроить проекты (для задачи msbuild) на использование /p:AnyCPU.

9 голосов
/ 18 февраля 2014

(Четыре года спустя ..)

Эта ошибка, кажется, еще жива в Visual Studio 2012.

Сегодня я не смог развернуть новую версию своего проекта Services, поскольку VS2012 постоянно говорил мне, что я не указал OutputPath ... пока у меня было , и я мог его видеть в окне свойств моего проекта.

Я также попытался развернуть свои службы на локальном диске на моем ноутбуке, просто чтобы посмотреть, сможет ли VS это сделать.

Но нет. Это не будет.

Ouch

Мой конфиг на самом деле назывался " Release (PreProd) " (без речевых меток), но VS пытается заикаться при попытке ввести это имя в путь.

Перезапуск Visual Studio 2012 не дал никакого эффекта, и (после поиска в Google) я проверил, что на моей машине нет переменной среды «Платформа», которая могла бы испортить компиляторы.

Смешным решением было открыть файл моего решения (.sln) в текстовом редакторе, а затем выполнить поиск и заменить «Любой процессор» на «AnyCPU».

Очевидно, действительно ...!

январь 2015

Просто добавлю, этот баг все еще жив и здоров.

Самое простое решение - переименовать ваши конфигурации, чтобы они не содержали пробелов или речевых меток (то есть имен по умолчанию !!)

Итак, переименовав конфигурацию с Release (Prod) на ReleaseProd, ошибка исчезнет.

4 голосов
/ 09 июня 2010

Я не уверен, что это был каждый «AnyCPU» (без пробела), но имя цели по умолчанию - «Любой процессор» с пробелом. Однако я должен отметить, что эти имена являются произвольными строками, и вы можете установить их так, как вам нравится, при условии, что они согласованы.

...