没有为此项目设置OutputPath属性


120

当我尝试在Visual Studio 2008中从x86调试模式编译项目时,出现此错误。当我查看抱怨的项目的属性组时,我看到设置了输出路径。

这是该.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>

谁能阐明这一点?

注意:当我编译此调试程序和任何CPU时,它都可以工作。

更新:错误1没有为此项目设置OutputPath属性。请检查以确保您指定了有效的配置/平台组合。配置='调试'平台='x86'


好的,您使用什么配置和平台?调试+ x86还是其他?
Ondrej Tucny 2012年

是VS配置管理器我选择debug + x86
Amzath'1

@DmitryShkuropatsky更新了错误消息
Amzath,2012年

1
看起来很正确。解决方案中是否还有另一个项目可能会导致错误?
德米特里·什库罗帕茨基

@DmitryShkuropatsky你说的对,这是另一个有问题的项目。但是VS抱怨正在编译的项目
Amzath 2012年

Answers:


214

通过Visual Studio中的ConfigurationManager添加新配置后,我遇到了完全相同的错误。

原来,当为整个解决方案(和每个项目)添加“生产”配置时,没有将OutputPath元素添加到.csproj文件中。

要解决此问题,我转到了项目属性中的“构建”选项卡,将OutputPath从更改\bin\Production\\bin\Production(删除了尾随\)并保存了更改。这将在.csproj文件中强制创建OutputPath元素,并且该项目已成功构建。

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


7
很好地抓住了这个错误。永远都不会想到单个斜杠会带来如此大的改变。拥有良好答案徽章。
ouflak

8
就我而言,构建proj文件是any cpu和之间的区别anycpu,但是您的帖子帮助我看到了这一点。
约书亚·德雷克

2
谢谢你,罗马,你救了我的一天。。。如果我能支持你的答案一百次!:)
马丁

2
刚刚在VS 2017 v15.6.6中遇到了这个问题,保存了培根,谢谢!
安格里斯特

1
@Joshua Drake,这是使用VSTS时的重要问题。在线Visual Studio使用“ any cpu”,而本地Visual Studio使用“ anycpy”。对于构建脚本很重要。
FrankyHollywood '18

27

如果解决方案中的项目引用了找不到的程序集,则在VS 2008中会看到此错误。如果程序集来自另一个项目,而该项目不是您的解决方案的一部分,而应该属于该项目,则可能会发生这种情况。在这种情况下,只需将正确的项目添加到解决方案中即可解决该问题。

检查解决方案中每个项目的“参考”部分。如果其中任何一个参考旁边带有红色x,则说明您已找到问题。该解决方案找不到该程序集引用。

错误消息有点令人困惑,但是我已经看过很多次了。


2
就我而言,这是一个“黄色警告”
AXMIM,2016年

26

如果您使用的是WiX,请查看此内容(存在错误) http://www.cnblogs.com/xixifusigao/archive/2012/03/20/2407651.html

有时,新的构建配置会添加到.wixproj文件中更远的文件中,即通过其他不相关的XML元素与其同级配置定义分开。

只需编辑该.wixproj文件,以<PropertyGroup>使定义构建配置的所有部分彼此相邻。(要.wixproj在VS2013中进行编辑,请在解决方案资源管理器中右键单击项目,然后单击“卸载项目”,再次右键单击->“编辑YourProject.wixproj。在编辑文件后重新加载。)


1
谢谢,这为我解决了。添加到项目中的配置越多,我的行为就越奇怪。一旦我清理了项目文件,一切就正常了。(此错误于2012年首次报告?好极了...)
Kirschi

谢谢,这对我来说也是
如此-PeterD

15

这是我发生的,因为我将以下行移到了.csproj文件开头附近:

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

需要将其放置在定义您的Configuration | Platform的PropertyGroup之后。


11

在Visual Studio中为该项目显示的错误(假设A)没有问题。当我逐行查看每个项目的构建的输出窗口时,我看到它在抱怨另一个项目(B)在项目A中被称为装配。项目B添加到了解决方案中。但是它在项目A中没有被引用为项目参考,而是在不同位置被称为装配参考。该位置包含为Platform AnyCpu编译的程序集。然后,我从项目A中删除了程序集引用,并添加了项目B作为引用。它开始编译。不确定此修复程序如何工作。


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

AnyCPU(没有空间)也为我工作。谢谢李
威廉姆

1
在将“解决方案或packages.config的路径”从.sln更改为.vbproj之后,在TFS 2017上运行构建过程时遇到错误。将BuildPlatform更改为AnyCPU也对我有用。请参阅“平台”这里下注:docs.microsoft.com/en-us/vsts/build-release/tasks/build/...
Mr.Zzyzzx

2
就我而言,从TFS启动构建时,"any cpu"是BuildPlatform的默认值。改变以"AnyCPU"解决问题。
XouDo

这是2020年-AnyCPU vs Any CPU仍然是麻烦的制造者。我正在使用VS2019,仍然在新项目上使用它。MS为什么要惩罚开发人员社区?
基督教

9

我遇到了同样的错误,但问题出在那是因为我在解决方案中创建了一个新配置,而该配置在另一个解决方案的引用程序集中不存在。

可以通过打开相关解决方案并将新配置添加到其中来解决。

这篇文章给了我一个想法,即在我确认解决方案中的所有项目都具有正确的配置之后,检查引用的程序集:

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


7

设置为在构建管道中生成.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”对我来说仍然是个谜,但是这种黑客有效。


通过遵循您的想法,我发现我不需要在项目中进行更改,而是在DevOps的Visual Studio Build步骤中,将Confguration字段设置为使用具有AnyCpu值的变量。
donatasj87

@ donatasj87您介意发布此字段的全部值吗?
周杰伦

1
完整值完全相同,这在TFS构建中也应该起作用。它只需要匹配.csproj文件中设置的值即可。:你可以看到它在这张图片pasteboard.co/JbdvBT5.png
donatasj87

4

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


3

我有:

  1. 右键单击有问题的项目 -> 卸载项目
  2. 右键单击项目,然后选择“ 编辑* .csproj”
  3. 从与特定名称和目标平台一起使用的现有配置中复制粘贴配置(我拥有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. 右键单击项目 -> 重新加载项目
  5. 重建项目/解决方案

3

如果仅当您尝试使用MSBuild从命令行编译项目时(如我的情况),才收到此错误,则解决方案是使用诸如的参数将输出路径手动传递给MSBuild /p:OutputPath=MyFolder


2

另一个疯狂的可能性:如果您遵循将Branch \ Main,Main和Release并排放置的简单源代码控制安排,并且您最终以某种方式从Main而不是Branch \ Main添加现有项目(假设您的工作解决方案是Branch \ Main),您可能会看到此错误。

解决方案很简单:引用正确的项目!


2

在将项目添加到解决方案中,然后从同一解决方案中的另一个项目引用它时,我遇到了这个问题-在引用上出现了黄色警告图标,请注意路径为空。

该解决方案类似于@Amzath提出的解决方案,例如,我的项目是使用不同的目标框架进行编译的。.NET 4.0与4.5。


2

在我的情况下,我的应用程序的内置地址设置为关闭的另一台计算机,因此我将其打开并重新启动VS,问题已解决。


2

另一个原因:您将项目A中的项目引用添加到解决方案X中的项目B。但是,已经包含项目A的解决方案Y现在已失效,直到您还将项目B添加到解决方案Y中。


2

添加新配置并删除“调试”和“发布”配置后,我遇到了同样的问题。就我而言,我使用的是cmd文件来运行构建和发布过程,但是引发了相同的错误。 我的解决方案: 在csproj文件中,以下内容:

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

如果未指定显式配置,则将“配置”设置为“调试”。将节点值从“调试”更改为我的自定义配置后,所有操作均顺利进行。希望这也会对正在阅读本文的人有所帮助:)


此论坛帖子中提到了此解决方案的详细信息。 social.msdn.microsoft.com/Forums/vstudio/en-US/...
阳光坦比

2

我有同样的问题,只需编辑.wixproj以使所有 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ... >元素并排放置。

那解决了我的问题


1

我正在使用的WiX项目在配置管理器中进行x64了全面设置。为解决方案创建“自定义操作”项目时,它会将所有内容默认x86.csproj文件中的内容。因此,我卸载了该项目,将其全部更改x86x64,进行了保存,重新加载,并对其进行了编辑。

我不明白为什么我必须这样做。配置管理器被设置为x64版本,但是不会在csproj文件中设置:(


0

在尝试了此处发布的所有其他建议之后,我发现对我来说解决方案是从.csproj文件中删除以下部分:

  <ItemGroup>
    <Service Include="{808359B6-6B82-4DF5-91FF-3FCBEEBAD811}" />
  </ItemGroup>

显然,来自原始项目的该服务(在本地计算机上不可用)暂停了整个构建过程,即使它对于编译不是必需的。


0

在为项目添加新平台后,我遇到了这个问题。在我的情况下,.csproj文件在Perforce源代码管理下,并且是只读的。我检查了一下,但是VS在重新启动之前没有捕获到更改。


0

我在Xamarin项目上也遇到过类似的问题。这可能很少见,但万一其他人遇到了问题。我的项目结构如下

  • xamarin.Android项目引用了xamarin.android.library项目的引用。
  • 我使用android.library项目中的一些代码创建了一个插件。
  • 现在这是问题所在。如果您在xamarin.android库项目上添加项目参考或nuget安装。您将收到此错误。开发人员认为代码在Android.Library项目中,并且我必须在该项目上引用新的插件。没有!
  • 您必须在Android主项目中添加参考。因为没有产生plugin-> library-> main项目输出。
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.