未为此项目设置OutputPath属性

时间:2012-01-31 20:54:49

标签: c# visual-studio

当我尝试在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>

任何人都可以了解这一点吗?

注意:当我编译这个Debug和Any CPU时,它可以工作。

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

21 个答案:

答案 0 :(得分:153)

在VisualStudio中通过ConfigurationManager添加新配置后出现完全相同的错误。

当生产&#39;生产时&#39;为整个解决方案(和每个项目)添加了配置,将 添加到csproj文件中。

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

听起来像是一个小故障。

答案 1 :(得分:26)

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

检查解决方案中每个项目的“参考”部分。如果他们中的任何一个在它旁边有一个红色x的引用,那么你就找到了你的问题。解决方案无法找到该程序集引用。

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

答案 2 :(得分:21)

如果你正在使用WiX看看(有一个bug) http://www.cnblogs.com/xixifusigao/archive/2012/03/20/2407651.html

有时,新的构建配置会被添加到文件下方的.wixproj文件中,也就是说,与其他不相关的XML元素的兄弟配置定义分开。

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

答案 3 :(得分:9)

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

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

这篇文章让我想到在我已经确认我的解决方案中的所有项目都具有正确的配置之后检查引用的程序集:

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

答案 4 :(得分:9)

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

答案 5 :(得分:7)

这发生在我身上,因为我已将以下行移至.csproj文件的开头附近:

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

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

答案 6 :(得分:3)

我遇到了同样的错误,所以我查看了项目设置,然后在&#34; Build&#34;部分是&#34;构建输出路径&#34;选项。价值是空的。所以我填写了&#34; bin \&#34;值错误消失了。它解决了我的问题。

答案 7 :(得分:2)

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

解决方案类似于@Amzath所建议的,我的项目正在使用不同的目标框架进行编译,例如。 .NET 4.0与4.5。

答案 8 :(得分:2)

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

答案 9 :(得分:2)

添加新配置并删除&#34; debug&#34;后,我遇到了同样的问题。和&#34;发布&#34; CONFIGS。 在我的情况下,我使用cmd文件来运行构建和发布过程,但抛出了相同的错误。 我的解决方案: 在csproj文件中有以下内容:

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

将配置设置为&#34; Debug&#34;如果我没有指定一个明确的。从&#34; debug&#34;更改节点值后我的自定义配置,一切顺利。希望这也能帮助那些阅读此内容的人:)

答案 10 :(得分:2)

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

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

答案 11 :(得分:2)

我有:

  1. 右键单击项目,出现问题-> 卸载项目
  2. 右键单击项目,然后选择编辑* .csproj
  3. 复制粘贴 现有配置中的配置,该配置可与特定名称和定位平台配合使用(我发布| 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. 重建项目/解决方案

答案 12 :(得分:1)

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

这解决了我的问题

答案 13 :(得分:1)

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

答案 14 :(得分:1)

我正在使用的WiX项目在x64的配置管理器中是全面的。在为解决方案制作自定义操作项目时,它会将所有内容默认为x86文件中的.csproj。所以我卸载了项目,通过将所有x86更改为x64进行了编辑,保存,重新加载,并且很好地继续执行。

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

答案 15 :(得分:1)

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

答案 16 :(得分:0)

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

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

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

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

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

答案 20 :(得分:0)

与 Philip Atz 类似,我的 .csproj 文件顶部有以下行。

<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />

进一步向下移动为我解决了这个问题。