Помилка "властивість outputpath не встановлена ​​для цього проекту"


90

У мене є рішення для декількох проектів у Visual Studio 2008. Я щойно додав нову конфігурацію під назвою Release-VersionIncrement до рішення, вказавши конфігурацію "використовувати випуск" як базову лінію. Усі файли проекту були оновлені з такою конфігурацією. Однак, коли я намагаюся скомпілювати конкретний проект за допомогою цієї конфігурації, я отримую таку помилку:

Помилка 5 Для цього проекту не встановлено властивість OutputPath. Переконайтеся, що ви вказали правильну комбінацію конфігурації / платформи. Конфігурація = 'Release-VersionIncrement' Платформа = 'AnyCPU' C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets 539 9 DataConversion

Що тут відбувається? Проект чудово компілюється у конфігурації Release або Debug.


6
Я боровся з цим годинами, поки не зрозумів, що у випадаючому списку у визначенні збірки TFS є "Будь-який процесор", а не "AnyCPU" !!!!
Muffin Man

1
У VS2012 випадаючим меню конфігурації збірки є "Будь-який процесор", але всередині файлу .csproj є "AnyCPU", тому в Jenkins або командному рядку використовуватиметься "AnyCPU".
Jirong Hu

Відповіді:


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 не мав провідного та кінцевого простору, на відміну від усіх інших Умов конфігурації. На цьому етапі я перемістив цей елемент нижче деяких інших конфігурацій (не впевнений, чому це мало значення, просто намагався щось зробити) і додав пробіл у умові. Після цього це спрацювало. Не впевнений, що зробило різницю.
Seth Flowers

2
У мене було інше питання. Я використовував SlowCheetah для створення моїх перетворень конфігурації для мого проекту Windows. Конфігурації не мали пробілів, як це пропонував @sethflowers. Я додав такі, але це не допомогло. Я побачив, що між конфігураціями є інша група властивостей. Отсортували так (просто розмістили групу властивостей під групами властивостей конфігурації проекту), а потім проблема зникла. Дякую за всі пропозиції тут. Це заощадило мені час !!!
Ральф Янсен,

7
Deffo спробуйте за допомогою \ p: Platform = "AnyCPU" замість \ p: Platform = "Any CPU". Це спрацювало від мене! Дивився на це віками!
Lee Englestone

78

Я також бачив цю помилку, коли наш агент збірки був налаштований на запуск платформи " Будь-який процесор " (з пробілами, як показано у Visual Studio), а не " AnyCPU " (одне слово, як зазначено у файлі проекту).


5
Я зіткнувся з тією ж проблемою, здається, що на рівні рішення діє "Будь-який процесор", а на рівні проекту - "AnyCPU". Іншими словами, це msbuild myproj.sln /p:Configuration=Debug /p:Platform="Any CPU"було добре, однак при побудові проекту мені довелося опустити простір у будь-якому процесорі: msbuild myproj.proj1.csproj /p:Configuration=Debug /p:Platform=AnyCPUщоб придушити помилку властивості Outputpath.
Emil G

2
Неймовірно, а який PITA для конфігурації CI. Я боровся з цим цілими днями.
Jeremy Holovacs,

У мене сталася ця помилка, коли я не зміг побудувати на основному сервері збірки, і альтернативний варіант, який я вибрав, передав "Будь-який процесор" замість "AnyCPU". Після перевірки були деякі відмінності в номерах версій MSBUILD та іншого програмного забезпечення. Дякую за відповідь,
Жиль

1
Я не можу повірити, що космос був винуватцем!
Олександра

36

У мене була та сама проблема, коли я спочатку використовував MSBuild. Моє рішення: визначити властивість OutputPath. Подобається це:

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

Це вирішило мою проблему для збірки хмарних служб TeamCity Azure. +1
starmandeluxe

Так само для мене з CSO Build VSO.
StriplingWarrior

11

У нашому випадку ми запускали сценарій збірки на наших коробках розробників HP. HP має деякі змінні середовища, які вони встановили для власних цілей, і одна з них - ПЛАТФОРМА (використовується, мабуть, для "Легкого налаштування HP").

Видалення змінної середовища PLATFORM спрацювало.

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


Це застало мене на моєму новому ноутбуці HP - дякую @Boggin - мені це не спало б на думку.
Роб Купер

9

Якщо Visual Studio спеціально скаржиться, що "Platform = 'BPC'", ви можете легко це виправити, видаливши змінну середовища "Platform".

Видаліть цього поганого хлопчика.

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


6

Як натякнув " Річард Дінгволл ", проблема пов'язана з VS із використанням дисплейної версії " Будь-який процесор " замість версії MSBuild, яка насправді читає " AnyCPU "

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


6

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


Ця була пов’язана з моєю проблемою, я додав нову конфігурацію для проекту wix після того, як її створив, а нову конфігурацію було додано в кінці файлу, тому всі пов’язані PropertyGroups із цією новою конфігурацією були розміщені ПІСЛЯ цього імпорту, перемістивши їх до верх, прямо поруч з іншими, змусив мене це працювати.
Eugenio Miró

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

Як Скотту S, мені довелося видалити змінну середовища "Платформа" .

Потім перезапустіть VS, і це нормально: повідомлення про помилку більше немає ...


Це спрацювало для мене, коли я також видалив платформу, яку я вказав у своєму кроці Build vNext MSBuild.
4imble

2

Проблема пов’язана з конфігурацією мого проекту. Ось сценарій:

Посилання на рішення A:

Посилання на проект X Проект Y
Проект Y

Посилання на рішення B (те, яке я намагаюся побудувати):

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

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


1
Я зіткнувся з тією ж помилкою, і це опрацювання було єдиним, що працювало у мене. В основному, у мене була конфігурація платформи рішення "Win32", яка створює проект silverlight із конфігурацією платформи "Будь-який процесор", а також проект веб-додатків із конфігурацією платформи "x86", в якому розміщений проект silverlight. Мені довелося додати нову конфігурацію платформи проекту до проекту silverlight, "x86" (і зберегти стару як конфігурацію за замовчуванням), щоб msbuild працював належним чином.
Рамі А.

2

У мене було таке саме повідомлення про помилку. Це було викликано наявністю посилання на проект, який був вивантажений і не потрібен компонувальнику (інакше він не зміг би під час компіляції). Видалення посилання на правопорушник вирішило проблему.


2

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


1

У моєму випадку OutputPath було встановлено властивість у файлах проекту. Але розвантаження, перевантаження, а потім відновлення це виправили.


1

Коли я додав у своє рішення нову конфігурацію рішення, я отримав повідомлення про помилку: "Властивість OutputPath не встановлена ​​для проекту X. Будь ласка, переконайтеся, що ви вказали правильну комбінацію конфігурації та платформи для цього проекту. Configuration = 'QA 'Платформа =' AnyCPU '. Ця помилка може також з'явитися, якщо якийсь інший проект намагається слідувати посиланням на проект до проекту, цей проект вивантажений або не включений у рішення, а проект посилання не будувати, використовуючи ту саму або еквівалентну конфігурацію або платформу .

У моєму випадку проблема сталася через виділену частину опису помилки. Частина проекту X у моєму рішенні мала посилання на проект Y іншого рішення (інша гілка).

Я вирішив цю проблему, змінивши проект X, використовуючи посилання на проектY у поточному рішенні. Сподіваюся, це допомагає комусь, хто має подібну проблему.


0

У моєму випадку новий XML-блок "PropertyGroup" був сформований внизу документа. Я щойно замінив його після інших тегів "PropertyGroup", і це вирішило проблему.


0

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

Просто переконайтеся, що всі відповідні проекти додані до нового рішення, і помилка зникне.


0

У мене була та ж помилка, тому я подивився налаштування проекту, і там у розділі "Збірка" є опція "Побудувати вихідний шлях". І значення було порожнім. Тому я заповнив значення "bin \", помилка зникла. Це вирішило мою проблему.


0

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



0

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

Відкрийте вікно NCrunch, де ви зможете побачити стан кожної збірки і де ви зможете побачити, що збірка не працює. Клацніть правою кнопкою миші на проекті, який не вдається побудувати, і натисніть "налаштувати вибраний компонент", там ви побачите в розділі "Налаштування побудови" властивість "Використовувати конфігурацію збірки", встановіть для нього, наприклад, "Налагодження", а властивість "Використовувати платформу побудови" встановіть його наприклад "AnyCPU". (Зверніть увагу, що встановлені вами налаштування збірки та конфігурації повинні існувати у ваших налаштуваннях конфіграції)

Зробіть це для всіх своїх проектів, але не для тестового проекту. Після цього у мене все працює нормально.


0

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

BUILD -> Configuration Manager ->

У стовпці Конфігурація Додати

Примітка: Це сталося лише тому, що я маю власну конфігурацію, а новостворені проекти не мали конфігурації.


0

Якщо хтось отримує цей у своїх журналах NCrunch, перевірте, чи PropertyGroupвизначають значення "Налагодження" / "Випуск" та "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

Щойно це було у VS2015 Professional:

Властивість OutputPath не встановлено для проекту 'xxxxx.csproj'. Будь ласка, переконайтесь, що ви вказали дійсну комбінацію конфігурації та платформи для цього проекту.

Це також багатопроектне жонглювання між налагодженням / випуском та різними цілями. Я в якийсь момент возився з конфігураціями збірки, і я знаю, що це може зіпсувати VS, тому я витягнув їх із репо. Все ще нічого доброго. OutputPath було встановлено, більше не було різниць із відомим хорошим станом, тому точно було щось не так з моєю локальною установкою.

Відкрив інсталятор VS2015 і натиснув "Відновити", і voila ... повернувся до нормального стану (принаймні поки що!)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.