该项目未设置OutputPath属性。

142

当我尝试从Visual Studio 2008的x86 debug模式编译我的项目时,我遇到了这个错误。当我查看抱怨的项目的属性组时,我发现输出路径已经设置好了。

下面是该.csproj文件的属性组部分:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
  <DebugSymbols>true</DebugSymbols>
  <OutputPath>bin\x86\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <BaseAddress>285212672</BaseAddress>
  <FileAlignment>4096</FileAlignment>
  <DebugType>full</DebugType>
  <PlatformTarget>x86</PlatformTarget>
 <ErrorReport>prompt</ErrorReport>

有人能解释一下这个问题吗?

注意:当我使用Debug和Any CPU编译时,它可以正常工作。

更新:错误1:未为此项目设置OutputPath属性。请确保指定了有效的Configuration/Platform组合。Configuration ='Debug' Platform='x86'


好的,您使用什么配置和平台?调试+ x86还是其他什么? - Ondrej Tucny
是的,我选择调试+ x86的VS配置管理器。 - Amzath
1
看起来没问题。解决方案中是否有其他项目可能导致错误? - Dmitry Shkuropatsky
@DmitryShkuropatsky,你是对的,出问题的是另一个项目。但是VS抱怨正在编译的项目。 - Amzath
SharpDevelop 5 存在这个问题。 - CS QGB
显示剩余2条评论
22个回答

260

在使用Visual Studio的ConfigurationManager添加新配置后,我遇到了相同的错误。

事实证明,在为整个解决方案(和每个项目)添加“Production”配置时,将OutputPath元素添加到.csproj文件中。

要修复此问题,我进入项目属性中的“生成”选项卡,将OutputPath从\bin\Production\更改为\bin\Production(删除尾随的\),然后保存更改。这将强制在.csproj文件中创建OutputPath元素,并成功构建该项目。

听起来对我来说像是一个故障。


7
这个反复无常的错误被你捕捉得很好。我从来没有想到一个斜杠会有那么大的影响。恭喜你获得“良好回答徽章”。 - ouflak
9
就我个人而言,构建一个proj文件时,“any cpu”和“anycpu”的区别是问题所在,但您的帖子帮助我看清了这一点。 - Joshua Drake
2
谢谢Roman,你救了我的一天...如果我能给你的回答点赞100次就好了! :) - Martin
2
刚在VS 2017 v15.6.6中遇到了这个问题,幸好解决了,谢谢! - Angrist
2
@Joshua Drake,使用VSTS时这是一个重要问题。Visual Studio Online使用“any cpu”,而本地Visual Studio使用“anycpy”。对于构建脚本非常重要。 - FrankyHollywood
显示剩余6条评论

32
如果您正在使用WiX,请注意以下内容(存在一个漏洞)http://www.cnblogs.com/xixifusigao/archive/2012/03/20/2407651.html 有时,新的构建配置会在文件的较低位置添加到 .wixproj 文件中,也就是说,与其他不相关的 XML 元素分开定义。
简单地编辑 .wixproj 文件,使所有定义构建配置的 <PropertyGroup> 部分相邻。(在 VS2013 中编辑 .wixproj 的方法:右键单击“解决方案资源管理器”中的项目,卸载项目,再次右键单击->编辑 YourProject.wixproj。编辑完文件后重新加载。)

3
谢谢,这个解决方法对我很有用。当我增加了更多的配置到项目中后,出现了很多奇怪的行为。一旦我清理了项目文件,一切都正常了。(这个 bug 第一次被报告是在 2012 年?太好了…) - Kirschi
2
谢谢,这个也解决了我的问题。 - PeterD

29
如果您的解决方案中引用了无法找到的程序集,就可以在VS 2008中看到此错误。 如果该程序集来自未包含在解决方案中但应该包括在内的另一个项目,则可能会发生这种情况。 在这种情况下,只需将正确的项目添加到解决方案即可解决问题。
检查解决方案中每个项目的“引用”部分。 如果其中任何一个引用旁边有一个红色 X,则说明找到了问题。 解决方案无法找到该程序集引用。
此错误消息有点令人困惑,但我已经见过很多次了。

3
在我的情况下,这是一个“黄色警告”。 - AXMIM

22
这是发生在我身上的事情,因为我把以下这行代码移到了.csproj文件的开头附近:
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

它需要放置在定义你的 Configuration|Platform 的 PropertyGroups 之后。


1
我刚使用.NET Reflector导出了一堆DLL/EXE,它生成的.CSPROJ文件就像你描述的那样错误了。哇,我以前从未见过这种情况。 - Christopher Painter

15

在将生成管道设置为编译 .csproj 而不是 .sln 后,在 Azure DevOps 中遇到此问题的输出。

对我而言,解决方案如下:编辑受影响项目的 .csproj,然后复制您整个

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCpu' ">

复制代码并粘贴,然后更改第一行如下:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|any cpu' ">

原因是,在我的情况下错误信息说

Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='release'  Platform='any cpu'.  

Azure为何要使用“any cpu”而非默认的“AnyCpu”对我来说是个谜,但这个 hack 能够运作。

3
按照您的想法,我发现在我的情况下,我不需要在项目中进行更改,而是需要在DevOps中的Visual Studio Build步骤中设置Configuration字段以使用带有AnyCpu值的变量。 - donatasj87
@donatasj87,您能否发布此字段的完整值? - Jay
1
完整的值应该完全相同,这也应该在TFS构建中起作用。它只需要匹配在您的.csproj文件中设置的值。您可以在此图片中看到它:https://pasteboard.co/JbdvBT5.png - donatasj87
您可能还需要为“Release|x86”添加一个属性组。 - Colm Bhandal

11

在项目A中,Visual Studio显示的错误没有问题。但是当我逐行查看每个项目的输出窗口时,发现它抱怨另一个项目B,该项目被引用为项目A的程序集。项目B已添加到解决方案中,但未将其作为项目引用而是作为不同位置的程序集引用。该位置包含编译为AnyCpu平台的程序集。然后,我从项目A中删除了程序集引用,并将项目B添加为引用。这样就可以编译了。 虽然不确定这个修复方式是如何起作用的。


19
尝试使用\p:Platform="AnyCPU"而不是\p:Platform="Any CPU"。对我有用!我看了好久才搞定! - Lee Englestone
1
我在运行TFS 2017上的构建过程时遇到了错误,这是因为我将“解决方案路径或packages.config”的文件从.sln更改为.vbproj。将BuildPlatform更改为AnyCPU对我也有用。请参见此处“平台”下的注释:https://learn.microsoft.com/en-us/vsts/build-release/tasks/build/visual-studio-build - Mr.Zzyzzx
3
在我的情况下,从TFS启动构建时,“BuildPlatform”默认值为“any cpu”。将其更改为“AnyCPU”解决了问题。 - XouDo
1
这是2020年 - AnyCPU vs Any CPU仍然是一个麻烦制造者。我正在使用VS2019,但在新项目中仍然遇到这个问题。 微软为什么要惩罚开发者社区? - Christian
@XouDo,你是怎么想到这个的?这两者之间有什么区别吗?顺便说一下,它解决了我的问题。 - Zeeshan
显示剩余2条评论

9
我遇到了相同的错误,但问题是因为我在我的解决方案中创建了一个新的配置,而这个配置在另一个解决方案的引用程序集中不存在。
可以通过打开相关的解决方案并将新的配置添加到其中来解决此问题。
在确认我的解决方案中的所有项目都具有正确的配置后,这篇文章给了我检查引用程序集的想法。

http://gabrielmagana.com/2010/04/solution-to-the-outputpath-property-is-not-set-for-this-project/


5

如果仅在使用MSBuild命令行编译项目时出现此错误(例如在我的情况下),则解决方法是手动传递输出路径给MSBuild,例如使用参数 /p:OutputPath=MyFolder


4

我有:

  1. Right-click on project with issue -> Unload Project
  2. Right-click on project and choose Edit *.csproj
  3. Copy-paste the configuration from existing configuration which works with specific name and targeting platform (I had Release | x64):

    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
      <OutputPath>bin\x64\Release\</OutputPath>
      <DefineConstants>TRACE</DefineConstants>
      <Optimize>true</Optimize>
      <DebugType>pdbonly</DebugType>
      <PlatformTarget>x64</PlatformTarget>
      <ErrorReport>prompt</ErrorReport>
      <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
      <Prefer32Bit>true</Prefer32Bit>
    </PropertyGroup>
    
  4. Right-click project -> Reload Project
  5. Rebuild project/solution

4

我曾遇到同样的错误,所以我查看了项目设置,在"构建"部分找到了"构建输出路径"选项。这个值是空的,所以我填写了"bin\"值后错误消失了。它解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接