2009-07-08 3 views
87

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

Error 5 The OutputPath property is not set for this project. Please check to make sure that you have specified a valid Configuration/Platform combination. Configuration='Release-VersionIncrement' Platform='AnyCPU' C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets 539 9 DataConversion

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

+6

Я боролся с этим в течение нескольких часов, пока не понял, что выпадающий список в определении сборки TFS имеет «Любой процессор», а не «AnyCPU» !!!! –

+1

В VS2012 выпадающим в конфигурации сборки является «Любой процессор», но внутри файла .csproj есть «AnyCPU», поэтому в Jenkins или командной строке будет использоваться «AnyCPU». –

ответ

93

Обычно это происходит, когда свойство 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, он существует для вашего файла проекта? Если не добавить его и повторите попытку.

+0

Sayed, Да, я проверил это, и файл проекта для проекта, имеющий проблемы, имеет свойство OutputPath. – laconicdev

+33

Если выходной путь правильный и вы все еще получаете эту ошибку, у вас могут быть ссылки на сборки или другие проекты, которые больше не существуют. Очистите старые ссылки. Это был мой опыт. –

+3

Я просто наткнулся на эту ошибку и должен был напрямую изменить файл проекта. Несмотря на то, что на странице свойств проекта указано «Любой процессор», свойство сначала было пустым, и я выбрал параметр Platform = BPC из моих переменных окружения. После того, как я исправил это и установил/сбросил страницу свойств с любого процессора на x86 и обратно, он все равно не будет строить, утверждая, что платформа теперь была «x86» (?!?). Разумеется, я выполнил шаги здесь и обнаружил, что теперь он установлен на x86, поэтому я отредактировал его вручную, и теперь все снова счастливы. Спасибо, парни! – DaveN59

2

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

ссылки Решение A:

Project X references Project Y
Project Y

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

Project X Project Z

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

+1

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

34

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

msbuild XXX.csproj /p:OutputPath=bin\Debug. 
+0

Это решило мою проблему для сборки TeamCity Azure Cloud Service. +1 – starmandeluxe

+0

Аналогично для меня с VSO CI Build. – StriplingWarrior

74

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

+4

Я столкнулся с той же проблемой, похоже, что на уровне решения «Любой процессор» действителен, но на уровне проекта это «AnyCPU». Другими словами, 'msbuild myproj.sln/p: Configuration = Debug/p: Platform =" Any CPU "' был прекрасен, однако при создании проекта мне пришлось опустить пробел в любом CPU: 'msbuild myproj.proj1. csproj/p: Configuration = Debug/p: Platform = AnyCPU' для подавления ошибки свойства Outputpath. –

+2

Невероятно, и что такое PITA для конфигурации CI. Я боролся с этим в течение нескольких дней. –

+0

У меня была эта ошибка, когда я не мог построить на основном сервере сборки, а альтернативный я выбрал «Any CPU» вместо «AnyCPU». После проверки были некоторые отличия в номерах версий MSBUILD и другого программного обеспечения. Спасибо за ваш ответ, – Gilles

1

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

4

Я удалил переменную среды Platform (был BNB или smth). Проблема ушла.

+1

К сожалению, даже после удаления переменной среды платформы она требует полной перезагрузки! – 79E09796

2

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

6

Как «Ричард Dingwall» намекнул, что проблема связана с VS с помощью дисплея версии своих «Любого процессора» вместо версии MSBuild, который на самом деле читает «AnyCPU»

Go в Build/New Build Definition или Edit Build Definition -> Process -> Конфигурации для сборки, откройте диалог выбора конфигурации и в «Платформа» вместо выбора «Любой процессор», вручную добавьте «AnyCPU "

9

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

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

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

+0

Это поймало меня на моем новом ноутбуке HP - спасибо @Boggin - это бы не произошло со мной. –

2

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

0

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

4

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

В моем случае, прочитал ошибки:

Built $/ProjectDirectory/ProjectName.csproj for default targets. c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (484): The OutputPath property is not set for project ProjectName.csproj'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='Debug' Platform='x64'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project.

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

Aha! 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> 
2

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

0

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

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

7

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

Delete this bad boy.

Теперь перезапустите Visual Studio, и вы хорошо идти.

0

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

6

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

+0

Это связано с моей проблемой, я добавил новую конфигурацию для проекта wix после того, как я ее создал, и новая конфигурация была добавлена ​​в конце файла, поэтому все связанные с этим PropertyGroups были добавлены после этой импоставки, перемещая их наверху, рядом с другими, заставило его работать на меня. –

+0

Эта проблема решила мою проблему с помощью wix. Спасибо. – Simon

3

Как Скотт S, я должен был удалить «Platform» переменную окружения.

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

+0

Это сработало для меня, когда я удалил платформу, указанную мной на шаге Build vNext MSBuild. – 4imble

0

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

0

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

0

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

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

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

0

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

BUILD -> Configuration Manager ->

В столбце Конфигурация Добавить

Примечание: Это только случилось, потому что у меня есть пользовательские настройки и вновь созданные проекты не имеют конфигурацию.

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> 

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

0

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

+0

Это не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав [Ask Question] (https://stackoverflow.com/questions/ask). Вы также можете [добавить щедрость] (https://stackoverflow.com/help/privileges/set-bounties), чтобы привлечь больше внимания к этому вопросу, как только у вас будет достаточно [репутации] (https://stackoverflow.com/help/ Что-репутация). - [Из обзора] (/ review/low-quality-posts/17034889) –

1

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

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

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