Ошибка «свойство outputpath не задано для этого проекта»

90

У меня есть многопроектное решение в Visual Studio 2008. Я только что добавил к решению новую конфигурацию под названием Release-VersionIncrement, указав конфигурацию «использовать выпуск» в качестве базовой. Все файлы проекта были обновлены с этой конфигурацией. Однако когда я пытаюсь скомпилировать конкретный проект с использованием этой конфигурации, я получаю следующую ошибку:

Ошибка 5 Свойство OutputPath не задано для этого проекта. Убедитесь, что вы указали допустимую комбинацию конфигурации / платформы. Configuration = 'Release-VersionIncrement' Платформа = 'AnyCPU' C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets 539 9 DataConversion

Что тут происходит? Проект отлично компилируется в конфигурации Release или Debug.

лаконичный
источник
6
Я боролся с этим часами, пока не понял, что в раскрывающемся списке в определении сборки TFS указано «Any CPU», а не «AnyCPU» !!!!
The Muffin Man
1
В VS2012 в раскрывающемся списке конфигурации сборки указано «Any CPU», но внутри файла .csproj указано «AnyCPU», поэтому в Jenkins или в командной строке можно использовать «AnyCPU».
Цзиронг Ху

Ответы:

94

Обычно это происходит, когда свойство OutputPath файла проекта пустое. Файлы проекта - это просто файлы MSBuild . Для редактирования в Visual Studio: щелкните правой кнопкой мыши проект, выберите «Выгрузить проект», затем щелкните правой кнопкой мыши выгруженный проект и выберите «Изменить ...».

Найдите группу свойств Release-Versionincrement. Это должно выглядеть примерно так

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-VersionIncrement|AnyCPU' ">
  <OutputPath>bin\Release-VersionIncrement\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <Optimize>true</Optimize>
  <DebugType>pdbonly</DebugType>
  <PlatformTarget>AnyCPU</PlatformTarget>
  <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
  <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
  <ErrorReport>prompt</ErrorReport>
</PropertyGroup>

Важный из них - OutputPath, существует ли он для вашего файла проекта? Если нет, добавьте и попробуйте еще раз.

Сайед Ибрагим Хашими
источник
33
Если выходной путь правильный и вы все еще получаете эту ошибку, у вас могут быть ссылки на сборки или другие проекты, которые больше не существуют. Удалите старые ссылки. Это был мой опыт.
John K
3
Я только что наткнулся на эту ошибку, и мне пришлось напрямую изменить файл проекта. Несмотря на то, что на странице свойств проекта указано «Любой процессор», свойство изначально было пустым, и я выбрал параметр Platform = BPC из переменных среды. После того, как я исправил это и установил / сбросил страницу свойств с любого процессора на x86 и обратно, он по-прежнему не создавался, утверждая, что теперь платформа была x86 (?!?). Разумеется, я выполнил описанные здесь шаги и обнаружил, что теперь он установлен на x86, поэтому я вручную отредактировал его, и теперь все снова счастливы. Спасибо ребята!
DaveN59,
2
В моем файле проекта была ожидаемая PropertyGroup с непустым OutputPath, и я получал эту ошибку. Единственное, что я заметил, это то, что PropertyGroup для этой конкретной конфигурации была первым элементом под корневым узлом в файле, а атрибут Condition не имел начального и конечного пробелов, в отличие от всех других условий конфигурации. На этом этапе я переместил этот элемент ниже некоторых других конфигураций (не уверен, почему это важно, просто пробовал что-то) и добавил пробел в условие. После этого все заработало. Не уверен, что имело значение.
Сет Флауэрс
2
У меня была другая проблема. Я использовал SlowCheetah для создания преобразований конфигурации для моего проекта Windows. В конфигурациях не было пробелов, как предлагал @sethflowers. Я добавил их, но это не помогло. Я увидел, что между конфигурациями была другая группа свойств. Итак, разобрались (просто поместили группу свойств ниже групп свойств конфигурации проекта), и проблема исчезла. Спасибо за все предложения здесь. Это сэкономило мне время !!!
LockTar
7
Деффо попробуйте использовать \ p: Platform = "AnyCPU" вместо \ p: Platform = "Any CPU". Это сработало у меня! Смотрел на это целую вечность!
Ли Энглстон
78

Я также видел эту ошибку, когда наш агент сборки был настроен на запуск платформы « Любой ЦП » (с пробелами, как показано в Visual Studio), а не « AnyCPU » (одно слово, как указано в файле проекта).

Ричард Дингуолл
источник
5
Я столкнулся с той же проблемой, похоже, что на уровне решения "Any CPU" является допустимым, но на уровне проекта это "AnyCPU". Другими словами, все msbuild myproj.sln /p:Configuration=Debug /p:Platform="Any CPU"было хорошо, однако при сборке проекта мне пришлось опустить пробел в Any CPU: msbuild myproj.proj1.csproj /p:Configuration=Debug /p:Platform=AnyCPUчтобы подавить ошибку свойства Outputpath.
Emil G
2
Невероятно, а что за PITA для конфигурации CI. Я боролся с этим несколько дней.
Джереми Головач
У меня была эта ошибка, когда я не мог выполнить сборку на основном сервере сборки, а выбранный мной альтернативный передавал «Any CPU» вместо «AnyCPU». После проверки были обнаружены некоторые различия в номерах версий MSBUILD и другого программного обеспечения. Спасибо за ответ,
Жиль
1
Я не могу поверить, что виновато пространство!
Александра
36

У меня была такая же проблема, когда я сначала использовал MSBuild. Мое решение: обязательно использовать свойство OutputPath. Как это:

msbuild XXX.csproj /p:OutputPath=bin\Debug.
Питер Мортенсен
источник
Это решило мою проблему для сборки облачной службы TeamCity Azure. +1
starmandeluxe 05
То же самое для меня с VSO's CI Build.
StriplingWarrior
11

В нашем случае мы запускали сценарий сборки на наших ящиках разработчика HP. У HP есть некоторые переменные среды, которые они настроили для своих целей, и одна из них - PLATFORM (используется, по-видимому, для «HP Easy Setup»).

Удаление переменной среды PLATFORM сработало.

Вы могли бы также Перспективные сценарии сборки, указав платформу, то есть
msbuild /p:Platform=AnyCPU.

Боггин
источник
Это застало меня на моем новом ноутбуке HP - спасибо @Boggin - мне такого бы не пришло в голову.
Роб Купер
9

Если Visual Studio конкретно жалуется, что «Platform = 'BPC'», вы можете легко исправить это, удалив переменную среды «Platform».

Удалите этого плохого парня.

Теперь перезапустите Visual Studio, и все готово.

Скотт С.
источник
6

Как намекнул Ричард Дингволл , проблема связана с VS, использующим отображаемую версию « Any CPU » вместо версии MSBuild, которая на самом деле читает « AnyCPU ».

Перейдите в Build / New Build Definition или Edit Build Definition -> Process -> Configurations to build, откройте диалоговое окно выбора конфигурации и в « Платформе » вместо выбора « Any CPU » вручную добавьте « AnyCPU »

Роберт Хоффманн
источник
6

Как было сказано, OutputPath должен быть установлен И он должен быть помещен перед <Import Project="$(WixTargetsPath)" /> файлом .wixproj.

ОлегМакс
источник
Это было связано с моей проблемой, я добавил новую конфигурацию для проекта wix после того, как создал его, и новая конфигурация была добавлена ​​в конец файла, поэтому все связанные PropertyGroups для этой новой конфигурации были размещены ПОСЛЕ этого импорта, перемещая их в верхняя, рядом с другими, заставила меня работать.
Эухенио Миро
4

Я удалил Platformпеременную окружения (был BNB или что-то в этом роде). Проблема ушла.

шип̈
источник
1
К сожалению, даже после удаления переменной среды Platform требуется полная перезагрузка!
79E09796
4

Я добавлял платформу x64 к своему решению сегодня, когда столкнулся с этой проблемой.

В моем случае ошибка гласила:

Создан $ / ProjectDirectory / ProjectName.csproj для целей по умолчанию. c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (484): свойство OutputPath не установлено для проекта ProjectName.csproj '. Убедитесь, что вы указали допустимую комбинацию конфигурации и платформы для этого проекта. Конфигурация = «Отладка» Платформа = «x64». Это сообщение может быть вызвано тем, что вы пытаетесь создать проект без файла решения и указали конфигурацию или платформу не по умолчанию, которая не существует для этого проекта.

Я знал OutputPath должно быть в порядке, поскольку это уже существующее работающее решение VS. Итак, я перешел к следующей подсказке - «допустимая комбинация конфигурации и платформы».

Ага! Visual Studio пытается построить Configuration='Debug', Platform='x64'. Посмотрев на свой файл проекта, я понял, что x64 не указана как одна из возможных платформ. Другими словами, у меня были следующие записи (сокращенные):

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
      <PlatformTarget>x86</PlatformTarget>
      <OutputPath>bin\x86\Debug\</OutputPath>  
      . . .  
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
      <PlatformTarget>x86</PlatformTarget>
      <OutputPath>bin\x86\Release\</OutputPath>    
      . . .
  </PropertyGroup>

Тогда легко исправить: просто добавьте записи x64!

Я скопировал / вставил записи x86 и изменил их на использование x64. Обратите внимание, что я также изменил пути, чтобы они не перезаписывали сборки x86:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Debug\</OutputPath>    
      . . .
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Release\</OutputPath>    
      . . .
  </PropertyGroup>
Густаво Мори
источник
3

Некоторое время я боролся с этим, а затем выгрузил, построил и перезагрузил проблемный проект в решении, после чего MSBuild заработал правильно.

Гленн
источник
3

Как Скотт С., мне пришлось удалить переменную среды «Платформа» .

Затем перезапустите VS, и все в порядке: больше сообщений об ошибке ...

М Денис
источник
Это сработало для меня, когда я удалил платформу, которую также указал на шаге Build vNext MSBuild.
4imble 05
2

Проблема была связана с конфигурацией моего проекта. Вот сценарий:

Ссылки на решение A:

Project X ссылается на Project Y
Project Y

Решение B (то, которое я пытаюсь построить) ссылается на:

Проект X Проект Z

Мое решение состояло в том, чтобы создать конфигурацию с тем же именем для Решения A, перестроить ее, а затем перестроить Решение B. Это устранило проблему.

лаконичный
источник
1
Я столкнулся с той же ошибкой, и этот обходной путь был единственным, что помогло мне. По сути, у меня была конфигурация платформы решения «Win32», которая строит проект silverlight с конфигурацией платформы «Any CPU», а также проект веб-приложения с конфигурацией платформы «x86», на котором размещен проект silverlight. Мне пришлось добавить новую конфигурацию платформы проекта в проект silverlight, «x86» (и оставить старую конфигурацию по умолчанию), чтобы msbuild работал должным образом.
Рами А.
2

У меня было такое же сообщение об ошибке. Это было вызвано наличием ссылки на проект, который был выгружен и не требовался компоновщику (в противном случае он завершился бы ошибкой во время компиляции). Удаление оскорбительной ссылки решило проблему.

Гише
источник
2

В моем случае (VS2010) я удалил строку в поле «Путь вывода», которое находится на вкладке «Сборка», и оставил его пустым. Затем я перестроил раствор. Сборка прошла успешно, и VS вставил текущий каталог "./" в "OutputPath". Я заменил текущий каталог "./" на свой путь ("bin \ x64 \ Release \" - достаточно сказать, что это точный путь к папке, на которую изначально жаловался VS), и перестройка снова прошла успешно.

Томаш Стыпич
источник
1

В моем случае свойство OutputPath было установлено в файлах проекта. Но разгрузка, перезарядка, а затем восстановление исправили это.

фаркашон
источник
1

Когда я добавил новую конфигурацию решения в свое решение, я получил сообщение об ошибке: «Свойство OutputPath не установлено для проекта X. Убедитесь, что вы указали допустимую комбинацию конфигурации и платформы для этого проекта. Configuration = 'QA 'Platform =' AnyCPU '. Эта ошибка также может появиться, если какой-либо другой проект пытается следовать межпроектной ссылке на этот проект, этот проект был выгружен или не включен в решение, а ссылающийся проект не сборка с использованием той же или эквивалентной конфигурации или платформы. ProjectY ".

В моем случае проблема была связана с выделенной частью описания ошибки. В Project X моего решения была ссылка на проект ProjectY другого решения (другая ветка).

Я решил эту проблему, изменив проект X для использования ссылки проекта на ProjectY в текущем решении. Надеюсь, это поможет кому-то, у кого есть аналогичная проблема.

BNJ
источник
0

В моем случае новый блок XML «PropertyGroup» был сгенерирован внизу документа. Я только что заменил его после других тегов «PropertyGroup», и это устранило проблему.

Александр Павленко
источник
0

Я создал новый проект в новом решении, которое ссылается на существующие проекты. Эта ошибка возникает, когда я добавляю существующий проект (скажем, проект 1) и пытаюсь выполнить сборку без добавления других проектов, на которые ссылается проект 1.

Просто убедитесь, что все соответствующие проекты добавлены в новое решение, и ошибка исчезнет.

Айк
источник
0

У меня была такая же ошибка, поэтому я посмотрел настройки проекта и там в разделе «Сборка» есть опция «Путь вывода сборки». И значение было пустым. Итак, я ввел значение "мусорное ведро", ошибка исчезла. Это решило мою проблему.

Лукас Дворак
источник
0

Если вы решили установить OutputPath в качестве параметра, и ваш путь такой: bin\Release\\тогда не забудьте добавить \в конце вот так: /p:OutputPath=bin\Release\\\\мне потребовалось время, чтобы понять, что это так

Марыся
источник
0

У меня такая же проблема. Я исправил это, очистив и перестроив проекты.

user5920105
источник
0

У меня была такая же проблема, и единственное решение, которое помогло, - это установить конфигурацию сборки вручную в каждом проекте NCrunch.

Откройте окно NCrunch, где вы можете увидеть статус каждой сборки и где вы можете увидеть, что сборка завершилась ошибкой. Щелкните правой кнопкой мыши проект, который не может быть построен, и нажмите «Настроить выбранный компонент» там, где вы видите, в разделе «Параметры сборки» свойство «Использовать конфигурацию сборки» установите для него, например, «Отладка», а свойство «Использовать платформу сборки» установите для него например "AnyCPU". (Обратите внимание, что установленные вами параметры сборки и конфигурации должны существовать в ваших настройках конфигурации)

Сделайте это для всех ваших проектов, но не для вашего тестового проекта. После этого у меня все работает нормально.

отряд
источник
0

У меня была такая же проблема, я исправил ее, добавив недостающие конфигурации в проект, который терпел неудачу.

СБОРКА -> Диспетчер конфигураций ->

В столбце конфигурации добавить

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

пмейер
источник
0

Если кто-то получает это в своих журналах NCrunch, проверьте, PropertyGroupопределены ли значения Debug / Release и AnyCPU / x86 перед группами свойств, использующими эти значения в своем состоянии.

<PropertyGroup>
    <!-- this one first -->
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <XXX>...</XXX>
  </PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <XXX>...</XXX>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <XXX>...</XXX>
</PropertyGroup>

Работал у меня.

Waescher
источник
0

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

ermenegild0
источник
0

Только что это было с VS2015 Professional:

Свойство OutputPath не задано для проекта xxxxx.csproj. Убедитесь, что вы указали допустимую комбинацию конфигурации и платформы для этого проекта.

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

Открыл установщик VS2015 и нажал «Восстановить», и вуаля ... вернулся в нормальное состояние (по крайней мере, пока!)

Эмерман
источник
0

Для меня это была строчка в конфигурации пакета NuGet. Избавьтесь от всего пакета, связанного с вашим файлом проекта, и посмотрите, как оживают (сохраните изменения). Затем снова наращивайте его по частям. Я свел его к этой строке, которую мне пришлось удалить:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

У меня проблема возникла после обновления пакетов NuGet (в основном, анализатора FxCop).

Мартин Маат
источник