“未为此项目设置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构建定义中的下拉列表具有“ Any CPU”而不是“ AnyCPU”!
松饼人

1
在VS2012中,构建配置中的下拉列表为“ Any CPU”,但.csproj文件内部为“ AnyCPU”,因此在Jenkins或命令行中,使用“ AnyCPU”即可。
Jirong Hu

Answers:


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
如果输出路径正确,但仍收到此错误,则可能引用了不再存在的程序集或其他项目。清除旧参考。那是我的经验。
约翰·K

3
我只是偶然发现了这个错误,不得不直接修改项目文件。即使项目属性页显示“ Any CPU”,该属性最初仍设置为空白,我从环境变量中选择了Platform = BPC设置。我修复该问题并将属性页从任何CPU设置/重置为x86并返回后,仍然无法构建,声称该平台现在为'x86'(?!?)。果然,我按照此处的步骤进行操作,发现它现已设置为x86,因此我手动对其进行了编辑,现在大家再次感到高兴。多谢你们!
DaveN59 2010年

2
我的项目文件具有预期的PropertyGroup,并且具有非空的OutputPath,并且出现此错误。我唯一注意到的是,此特定配置的PropertyGroup是文件根节点下的第一个元素,并且Condition属性与所有其他配置Condition不同,没有前导和尾随空格。此时,我将此元素移到了其他一些配置下(不确定为什么会很重要,只是尝试了一些东西),并在条件中添加了空格。在此之后,它起作用了。不确定哪个有所作为。
赛斯花

2
我还有另一个问题。我使用SlowCheetah为Windows项目创建了配置转换。配置中没有@sethflowers建议的空格。我添加了这些,但是那无济于事。我看到配置之间还有另一个属性组。如此解决(将属性组放置在项目配置属性组下面),然后问题就消失了。感谢您在这里提出的所有建议。它节省了我的时间!
拉尔夫·詹森

7
Deffo尝试使用\ p:Platform =“ AnyCPU”代替\ p:Platform =“ Any CPU”。这对我有用!看着这个很久了!
Lee Englestone 2013年

78

当我们将构建代理配置为运行平台“ Any CPU ”(在Visual Studio中显示空格)而不是“ AnyCPU ”(在项目文件中指定一个字)时,我也看到了此错误。


5
我遇到了同样的问题,看来在解决方案级别上,“任何CPU”都是有效的,但是在项目级别上,它是“ AnyCPU”。换句话说, msbuild myproj.sln /p:Configuration=Debug /p:Platform="Any CPU"很好,但是在构建项目时,我不得不忽略Any CPU中的空间:msbuild myproj.proj1.csproj /p:Configuration=Debug /p:Platform=AnyCPU以抑制Outputpath属性错误。
Emil G

2
令人难以置信的是,CI配置的PITA是什么。我已经为此苦苦挣扎了好几天了。
杰里米·霍洛瓦奇

当我无法在主构建服务器上构建并且我选择的备用服务器通过“ Any CPU”而不是“ AnyCPU”时,出现了此错误。检查后,MSBUILD和其他软件的版本号有所不同。感谢您的回答,
Gilles 2015年

1
我不敢相信这个空间是罪魁祸首!
亚历山德拉(Alexandra)

36

我第一次使用MSBuild时遇到了同样的问题。我的解决方案是:绝对使用OutputPath属性。像这样:

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

这为TeamCity Azure云服务构建解决了我的问题。+1
starmandeluxe

对于我来说,VSO的CI Build也是如此。
StriplingWarrior

11

在我们的案例中,我们正在HP开发人员盒上运行构建脚本。HP设置了一些环境变量以用于自己的目的,其中之一是PLATFORM(显然用于“ HP Easy Setup”)。

删除PLATFORM环境变量即可。

您还可以通过指定平台(即)来对构建脚本进行过时的验证
msbuild /p:Platform=AnyCPU


这让我在我的新HP笔记本电脑上着迷-感谢@Boggin-这对我而言不会发生。
罗伯·库珀

9

如果Visual Studio特别抱怨“ Platform ='BPC'”,则可以通过删除环境变量“ Platform”轻松地解决此问题。

删除这个坏男孩。

现在重新启动Visual Studio,您一切顺利。


6

就像“ Richard Dingwall ”所暗示的那样,问题与VS使用显示版本为“ Any CPU ”而不是实际显示为“ AnyCPU ”的MSBuild版本有关。 ”的

进入Build / New Build Definition或Edit Build Definition-> Process- > Configurations进行构建,打开配置选择对话框,在“ Platform ”中而不是选择“ Any CPU ”,手动添加“ AnyCPU


6

正如有人说,OutputPath必须设置,它必须放在 <Import Project="$(WixTargetsPath)" />在.wixproj文件


这与我的问题有关,创建它后,我为wix项目添加了一个新配置,并且在文件末尾添加了新配置,因此所有与该新配置相关的PropertyGroups都在此导入后放置,并将它们移至顶部紧挨着其他顶部,对我有用。
EugenioMiró17年

4

我删除了Platform环境变量(是BNB还是类似的东西)。问题解决了。


1
不幸的是,即使删除了平台环境变量,它也要求完全重新启动!
79E09796

4

当我遇到此问题时,我今天将x64平台添加到我的解决方案中。

就我而言,错误显示为:

为默认目标构建$ / ProjectDirectory / ProjectName.csproj。c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(484):未为项目ProjectName.csproj'设置OutputPath属性。请检查以确保为该项目指定了配置和平台的有效组合。配置=“调试”平台=“ 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

作为Scott S,我必须删除“ Platform”环境变量

然后重新启动VS,就可以了:没有更多错误消息...


当我删除在Build vNext MSBuild步骤中指定的平台时,这对我也有效。
4imble

2

这个问题与我的项目配置有关。这是场景:

解决方案A参考:

项目X参考项目Y
项目Y

解决方案B(我正在尝试构建的)参考:

工程X工程Z

我的解决方案是为解决方案A创建一个具有相同名称的配置,重新生成它,然后重新生成解决方案B。这解决了问题。


1
我遇到了相同的错误,这种解决方法是唯一对我有用的方法。基本上,我有一个解决方案平台配置“ Win32”,它使用平台配置“ Any CPU”构建了一个Silverlight项目,还拥有一个托管了silverlight项目的带有平台配置“ x86”的Web应用程序项目。我必须为silverlight项目添加一个新的项目平台配置“ x86”(并将旧的配置保留为默认配置),以使msbuild能够按预期工作。
拉米A.

2

我有同样的错误信息。这是由于引用了一个已卸载但链接器不需要的项目引起的(否则,它在编译时会失败)。删除有问题的参考文献可以解决此问题。


2

就我而言(VS2010),我在“构建”选项卡上的“输出路径”框中删除了字符串,并将其留空。然后,我重建了解决方案。构建成功,VS将当前目录“ ./”插入“ OutputPath”。我用路径(“ bin \ x64 \ Release \”替换了当前目录“ ./” -足以说这是VS首先抱怨的确切文件夹路径),并且重建再次成功。


1

在我的情况下,在项目文件中设置了OutputPath属性。但是卸载,重新加载然后重新构建可以解决此问题。


1

在我的解决方案中添加新的解决方案配置时,出现错误消息:“未为项目X设置OutputPath属性。请检查以确保为该项目指定了Configuration和Platform的有效组合。Configuration ='QA 'Platform ='AnyCPU'。 如果其他某个项目试图遵循该项目的项目间引用,此项目已被卸载或未包含在解决方案中并且引用项目未包含,则也可能出现此错误使用相同或等效的配置或平台进行构建。

就我而言,问题是由于错误说明中突出显示的部分所致。我的解决方案的Project X部分有一个引用另一个解决方案(不同分支)的ProjectY的项目。

我已通过修改项目X以在当前解决方案中使用对ProjectY的项目引用来解决此问题。希望这对遇到类似问题的人有所帮助。


0

在我的情况下,新的“ PropertyGroup” XML块是在文档底部生成的。我只是在其他“ PropertyGroup”标签之后替换了它,这解决了问题。


0

我在新解决方案中创建了一个引用现有项目的新项目。当我添加现有项目(例如项目1)并尝试在不添加项目1引用的其他项目的情况下进行构建时,会发生此错误。

只要确保所有相关项目都已添加到新解决方案中,错误就消失了。


0

我遇到了同样的错误,因此我查看了项目设置,“构建”部分中的“构建输出路径”选项存在。价值是空的。所以我填写了“ bin \”值,错误消失了。它解决了我的问题。


0

如果您决定将OutputPath设置为参数,并且您的路径是这样的:bin\Release\\那么请记住\像这样最后添加:/p:OutputPath=bin\Release\\\\我花了一段时间才意识到是这种情况



0

我遇到了同样的问题,唯一有用的解决方案是在每个NCrunch项目中手动设置“生成配置”。

打开NCrunch窗口,您可以在其中看到每个内部版本的状态,也可以看到内部版本失败。右键单击无法构建的项目,然后单击“配置选定的组件”,您会在“构建设置”下看到将属性“使用构建配置”设置为例如“调试”,将属性“使用构建平台”设置为例如“ AnyCPU”。(请注意,您设置的构建和配置设置必须存在于konfigration设置中)

对您的所有项目都执行此操作,但不要对测试项目执行此操作。之后,一切对我来说都很好。


0

我有同样的问题,我通过向失败的项目中添加缺少的Configurations来解决它。

建立->配置管理器->

在“配置”列下,添加

注意:这仅是因为我具有自定义配置,而新创建的项目没有该配置。


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

刚刚在VS2015 Professional中遇到了这个问题:

未为项目“ xxxxx.csproj”设置OutputPath属性。请检查以确保为该项目指定了配置和平台的有效组合。

这也是调试/发布与不同目标之间的多项目处理。我曾经在某种程度上摆弄过构建配置,并且我知道这可能会使VS混乱,因此我从回购中撤回了它们。还是不好。设置了OutputPath,不再有任何已知状态良好的差异,因此本地安装肯定存在问题。

打开VS2015安装程序,然后单击“修复”,瞧……恢复正常(至少到目前为止!)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.