«Свойство OutputPath не установлено» ошибка возникает только при вызове MSBuild в CCNET - PullRequest
4 голосов
/ 03 июня 2010

Я создал проект MSBuild, который просто выполняет задачу msbuild с нашим файлом решения в качестве параметра. Я определил цель BeforeBuild, в которой я установил некоторые свойства, и цель Build, которая выполняет задачу msbuild.

Я подтвердил, что при сборке сценария msbuild в консоли командной строки не было ошибок. Однако, когда я использую его в задаче msbuild в своем проекте CCNET, я получаю следующую ошибку:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (483,9): ошибка: OutputPath свойство не установлено для проекта 'MyProject.msbuild. Пожалуйста, проверьте, чтобы убедитесь, что вы указали действительная комбинация конфигурации и Платформа для этого проекта. Конфигурация = «отладка» Платформа = 'AnyCPU. Вы можете видеть это сообщение, потому что вы пытаетесь построить проект без решения файл, и указали не по умолчанию Конфигурация или Платформа, которая не существуют для этого проекта.

Я проверил журнал сборки, и кажется, что ошибка возникает во время _CheckForInvalidConfigurationAndPlatform. Он даже не смог продолжить мою задачу по сборке! Поскольку скрипт предназначен только для построения решения под Debug / Release и AnyCPU в качестве платформы, я попытался добавить следующие строки в мой проект msbuild:

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

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

Я не понимаю, почему CCNET продолжает получать ошибку, и я не знаю, что еще попробовать.

Пожалуйста, помогите.

Ответы [ 2 ]

10 голосов
/ 14 декабря 2010

Я обнаружил, что у меня была похожая ситуация (но я использовал TeamCity в качестве среды CI). В моем конкретном случае проект представлял собой приложение командной строки. Чтобы решить эту проблему, мне пришлось вручную отредактировать файл моего проекта.

Найдите эти строки:

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>

Изменить вторую строку на:

<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

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

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

становится:

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

Я подозреваю, что наши серверы сборки являются 64-битными, и тип проекта Console Application в Studio не позволит вам сделать проект подходящим для платформы AnyCPU ...

После этих изменений у TeamCity не было проблем с моим скриптом сборки.

3 голосов
/ 24 марта 2011

Ответ от Дэвида помог мне. Но позже я обнаружил фактический источник проблемы для моего компьютера. Переменная среды PLATFORM добавляется на компьютерах HP и влияет на ряд различных сценариев с Visual Studio.

Перейдите в Переменные среды-> Системные переменные и удалите «ПЛАТФОРМУ» из списка.

Подробнее см. Здесь: http://blogs.msdn.com/b/jnak/archive/2010/03/24/outputpath-property-is-not-set-for-project-error-when-building-a-windows-azure-cloud-service-in-vs-2010.aspx

...