ошибка «свойство outputpath не установлено для этого проекта» - PullRequest
88 голосов
/ 09 июля 2009

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

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

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

Ответы [ 26 ]

93 голосов
/ 09 июля 2009

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

76 голосов
/ 01 сентября 2010

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

35 голосов
/ 25 февраля 2010

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

msbuild XXX.csproj /p:OutputPath=bin\Debug.
9 голосов
/ 30 марта 2012

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

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

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

7 голосов
/ 07 июня 2013

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

Delete this bad boy.

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

6 голосов
/ 16 апреля 2014

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

6 голосов
/ 16 августа 2011

Как и " Richard Dingwall ", проблема связана с VS, использующим дисплей версию " Any CPU " вместо версии MSBuild, которая на самом деле читает " AnyCPU "

Перейдите в «Сборка / Новое определение сборки» или «Редактировать определение сборки» -> «Процесс» -> «Конфигурации» для построения, откройте диалоговое окно выбора конфигурации и в « Платформа » вместо выбора « Любой ЦП * 1014». * ", добавьте вручную" AnyCPU"

4 голосов
/ 14 ноября 2012

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

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

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

Я знал, что 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>
4 голосов
/ 19 ноября 2010

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

3 голосов
/ 20 мая 2011

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

...