未为此项目设置 OutputPath 属性

在 VisualStudio2008中尝试从 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 它工作。

更新: Error 1未为此项目设置 OutputPath 属性。请检查以确保您已指定了有效的配置/平台组合。Configuration = ‘ Debug’Platform = ‘ x86’配置 = ‘调试’平台 = ‘ x86’

158358 次浏览

在项目的可视化工作室中显示的错误(让我们说 A)没有问题。当我逐行查看每个项目的生成窗口时,我看到它在抱怨另一个项目(B) ,这个项目在项目 A 中被称为组装,项目 B 被添加到解决方案中。但是它在项目 A 中并没有作为项目引用而是作为来自不同位置的组装引用。该位置包含为 Platform AnyCPU 编译的程序集。然后,我从项目 A 中删除了程序集引用,并添加了项目 B 作为引用。它开始编译。 虽然不确定这个修复是如何工作的。

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

检查解决方案中每个项目的“引用”部分。如果其中任何一个引用旁边有一个红色的 x,那么就说明您已经找到了问题所在。解决方案无法找到该程序集引用。

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

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

解决方案很简单: 参考正确的项目!

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

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

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

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

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

解决方案类似于@Amzath 建议的,我的项目是用不同的目标框架编译的,例如。NET 4.0 vs 4.5.

我也有同样的错误,所以我查看了项目设置,在“构建”部分中有“构建输出路径”选项。而价值是空的。所以我填写了“ bin”值,一个错误消失了。解决了我的问题。

在我的情况下,我的应用程序的构建地址被设置为另一台关闭的计算机,所以我打开它,重新启动 VS 和问题解决。

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

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

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

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

在添加了新配置并删除了“调试”和“发布”配置之后,我遇到了同样的问题。 在我的例子中,我使用一个 cmd 文件来运行构建和发布过程,但是抛出了相同的错误。 我的解决办法是: 在 csproj 文件中如下:

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

设置配置为“调试”,如果我没有指定一个明确的。在将节点值从“ debug”更改为我的自定义配置之后,一切工作都很顺利。希望这也能帮助读者:)

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

当为整个解决方案(以及每个项目)添加“ Product”配置时,OutputPath 元素 不是添加到。Csproj 文件。

为了解决这个问题,我转到项目属性中的 Build 选项卡,将 OutputPath 从 \bin\Production\更改为 \bin\Production(删除后跟的 \)并保存更改。控件中的 OutputPath 元素的强制创建。Csproj 文件和项目已成功构建。

听起来像是故障。

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

这解决了我的问题

这种情况发生在我身上是因为我将下面的行移到了. csproj 文件的开头:

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

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

我正在使用的 WiX 项目在 x64的配置管理器中是硬设置的。在为解决方案制作 Custom Action 项目时,它将 .csproj文件中的所有内容都默认为 x86。所以我卸载了这个项目,通过将所有的 x86改为 x64来编辑它,保存,重新加载,然后就可以继续了。

我不明白我为什么要这么做。配置管理器被设置为构建为 x64,但是在 csproj文件中没有设置: (

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

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

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

我有:

  1. 右键单击 Project with problem-> < strong > Unload Project
  2. 右键单击 project 并选择 编辑 * . csproj
  3. 复制粘贴 来自现有配置的配置,可以使用特定的名称和目标平台(我有 < strong > 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

如果只有在尝试使用 MSBuild 从命令行编译项目时才出现此错误(就像我的情况一样) ,那么解决方案是使用 /p:OutputPath=MyFolder参数手动将 outputpath 传递给 MSBuild。

在设置构建。Csproj 而不是。生成管道中的 sln。

我的解决办法是: 编辑受影响项目的 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”对我来说是一个谜,但是这种黑客技术是可行的。

在给我的项目添加了一个新的平台之后,我遇到了这个问题。对我来说。Csproj 文件在 Perforce 源代码管理下,并且是只读的。我检查了一下,但 VS 没有发现变化,直到我重新启动它。

我在 Xamarin 项目中也遇到过类似的问题。这可能是罕见的情况下,但万一其他人有这个问题。我的项目结构如下

  • Android 项目引用了 xamarin.Android.library 项目。
  • 我使用 android.library 项目中的一些代码创建了一个插件。
  • 现在的问题是。如果您在 xamarin.android 库项目中添加项目引用或者 nuget 安装。你会得到这个错误。开发人员假设代码在 Android 内部。图书馆项目和我必须参考这个项目的新插件。不!
  • 你必须在 Main Android 项目上添加一个引用,因为 plugin-> library-> Main project output 不会产生。

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

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

再往下移一点,我就解决了这个问题。

对我来说,这个错误并不是由一个模糊的问题引起的,就像其他问题一样,比如 这个答案。在我的例子中,错误消息非常准确地描述了错误所在。它说我正在尝试为一个特定的构建配置和目标平台进行构建,但是我没有在我的项目属性文件中定义配置/平台的组合。因此,我探索了两种选择:

  1. 根据 这个答案修改项目文件以支持给定的目标平台
  2. 根据项目属性将生成的目标平台修改为现有支持的配置之一

从某种意义上说,两者都起到了解决问题的作用。但是第二个对我来说是正确的。我遇到的问题如下:

  1. 在 VS 中,我有一个 x86的目标平台,并且在项目文件中有一个 PropertyGroup 用于这个目标平台,所以这一切都工作得很好。
  2. 但是当我尝试从命令行构建时,使用 MSBuild.exe默认的目标平台是“ any cpu”,除非明确指定为命令行参数。

因此,在我的例子中,由于我想以 x86为目标,所以修复的方法是在命令行上明确地告诉 MSBuild 为 x86平台构建,如 这个答案所示。

引用这个答案:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe my.sln /t:build /p:Configuration=Release;Platform=x86

注意重点:

;Platform=x86