it-roy-ru.com

Свойство OutputPath не установлено для проекта

Создание моего решения Jenkins/MSBuild дает мне эту ошибку

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): error : 
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='Latest'  Platform='AnyCPU'.  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. 
[C:\<path>\<projectname>.csproj]

Есть идеи?

ПРАВКА

У меня есть это в моем файле .csproj

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Latest|AnyCPU'">
    <OutputPath>bin\Latest\</OutputPath>
  </PropertyGroup>
49
Sachin Kainth

Откройте ваш csproj в текстовом редакторе и посмотрите, есть ли у вас раздел группы свойств, он должен выглядеть примерно так:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Latest|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Latest\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>Prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  </PropertyGroup>

У вас есть «Последняя» конфигурация сборки? Если нет, добавьте вышеуказанный раздел в csproj.

47
James Woolfenden

Я выяснил, как это работает (без изменения свойств sln/csproj в VS2013/2015).

  1. если вы хотите собрать файл .sln ----/p:ConfigurationPlatforms=Release/p: Platform = "Any CPU" если вы хотите создать файл .csproj ----/p : Configuration = Release /p:Platform=AnyCPU обратите внимание на «Любой ЦП» против AnyCPU

  2. проверьте анализ кода, fxcop, тестовое покрытие (NCover) целей. а также MSBUILD должны быть расположены правильно. в моем случае это "C:\Windows\Microsoft.NET\Framework64\v4.0.30319" , но это может отличаться, поскольку вы можете видеть, что Microsoft предоставила 6 cmd опций для построения базы кода :: AMD (с кросс-платой , опции x86 и x64) и Windows (cross, x86, x64), а также, когда разработка кода происходила с JIT по умолчанию (это может быть PreJIT ngen.exe, econoJIT)

Я думаю, что больше, чем эта проблема может быть решена с помощью Power Shell + msbuild. Может быть полезным для кого-то ...

24
Saurabh

Как уже упоминалось, perlyking, а не редактирование csproj XML Следующее сработало для меня. Вот шаги, которые я использовал.

  1. Откройте Свойства проекта.
  2. Выберите вкладку Build.
  3. В разделе «Вывод» проверьте, установлен ли выходной путь. (если не установлен один, сохраните проект, и он должен работать).
  4. Если он установлен, нажмите кнопку «Обзор ...» пути вывода.
  5. Когда откроется диалоговое окно выбора папки, перейдите на один уровень вверх в браузере файлов , А затем повторно выберите папку вывода и нажмите Кнопку «Выбрать папку».
  6. Сохраните свойства проекта, и он должен работать.
11
Bevan

Чтобы добавить к тому, что сказал @James, я обнаружил, что, если я посмотрю на свойства проекта Compile в VS2013, будет указан путь вывода Build . Но когда я изучил файл .csproj напрямую, элемент OutputPath отсутствовал для соответствующей конфигурации сборки. Поэтому в VS я просто сделал и отменил незначительное редактирование пути вывода, сохранил его, и это выбило значение в файл проекта, и я смог построить.

5
perlyking

У меня была такая же проблема. Я обновил свою платформу Windows с помощью командной строки. В настоящее время я получил обновление до версии [email protected] Затем вам нужно найти имя файла «SQLite3.UWP.vcxproj». Попробуйте изменить «v141» на «v140». В настоящее время я использую Visual Studio 2015 Professional. Если это Visual Studio 2017, то нет необходимости менять версию в файле SQLite3.UWP.vcxproj.

1
FrontEndOnDemand

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

Нарушивший Build output path был:

.\bin\Output

Проблема была решена путем изменения его на 

bin\Output

Выходной путь сборки можно найти на вкладке Build свойств проекта, и для каждой комбинации Configuration и Platform есть разные пути.

1
JotaBe

Только что возникла проблема с некоторыми сервисными структурами в MSBuild.

Первым шагом было щелкнуть правой кнопкой мыши каждый затронутый проект и открыть его Свойства, выбрать вкладку «Построение», а затем установить целевую платформу на x64.

Вторым шагом было войти в диспетчер конфигурации и настроить каждый проект на использование x64 для отладки и выпуска.

Это было для проекта VS2017.

1
MattD

Я получил эту ошибку только когда я публиковал свой веб-проект. Я ошибочно выбрал неправильную конфигурацию сборки при настройке профиля публикации.

1
raterus

Я использовал MSBuild для создания нескольких файлов .sln и добавил новый шаг для создания файла .csproj, когда столкнулся с этой ошибкой.

@ Saurabh's ответ высветил корень проблемы. Однако, исправляя это, добавление /p:Platform=AnyCPU в раздел Аргументы MSBuild не исправило это. На самом деле мне нужно было обновить значение Platform на этапе сборки.

На всех других этапах сборки использовалось значение переменной $(BuildPlatform) (которое оказалось «любым процессором» с пробелом в нем).

(Если бы я создавал несколько файлов .csproj, я, вероятно, создал бы вторую переменную для платформы AnyCPU.)

 Screenshot of Visual Studio Build step

0
Keiki

У меня было две конфигурации проекта, Debug и Release. Когда использовалась сборка Release, она выдавала эту ошибку. Проблема, которую я обнаружил, заключалась в том, что в файле csproj конфигурация Debug находилась в верхней части, а конфигурация Release была в нижней части.

Ручное перемещение сборки Release чуть ниже сборки Debug исправило ее.

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

0
MM-MikeSauce

Свойство OutputPath не задано для project. Сообщение об ошибке будет отображаться, если существует переменная среды Platform (как это происходит на ноутбуках HP), а цель MSBuild содержит ссылку на другой проект Visual Studio. 

После переименования переменной среды Platform моя сборка работает.

Кажется, что параметр /p:Platform="Any CPU" применяется к целевому решению, но не переносится на проекты, на которые есть ссылки. В моем случае в сообщении об ошибке указывалось, что указанные проекты используют переменную среды Platform=MCD.

0
jtc

Эта ошибка вводит в заблуждение и может быть вызвана другой проблемой. Проверьте все сообщение:

The OutputPath property is not set for project 'myproject'.  Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='myconfig'  Platform='AnyCPU'.  This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform.

В моей конфигурации сборки отсутствовал этот узел в csproj:

<PlatformTarget>AnyCPU</PlatformTarget>

Несмотря на то, что AnyCPU была выбранной Платформой в выпадающем списке, фактического xml там не было. Добавление этого исправило несоответствие между проектом и другим проектом, на который он ссылался.

0
user3063448