90

构建我的 Jenkins/MSBuild 解决方案给了我这个错误

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): error : 
The OutputPath property is not set for project '<projectname>.csproj'.  Please check to
make sure that you have specified a valid combination of Configuration and Platform 
for this project.  Configuration='Latest'  Platform='AnyCPU'.  You may be seeing this 
message because you are trying to build a project without a solution file, and have
specified a non-default Configuration or Platform that doesn't exist for this project. 
[C:\<path>\<projectname>.csproj]

有任何想法吗?

编辑

我的 .csproj 文件中有这个

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Latest|AnyCPU'">
    <OutputPath>bin\Latest\</OutputPath>
  </PropertyGroup>
4

16 回答 16

100

我已经弄清楚它是如何工作的(不改变 VS2013/2015 中的 sln/csproj 属性)。

  1. 如果要构建 .sln 文件:
    1. /p:ConfigurationPlatforms=Release /p:Platform="Any CPU"
  2. 如果要构建 .csproj 文件:
    1. /p:Configuration=Release /p:Platform=AnyCPU
      1. 注意"Any CPU"vsAnyCPU
  3. 检查代码分析、fxcop、测试覆盖率(NCover)目标以及 MSBUILD 是否应正确定位。在我的情况下:
    1. C:\Windows\Microsoft.NET\Framework64\v4.0.30319 但它可能会有所不同,因为您可以看到微软提供了 6 个 cmd 选项来构建代码库::AMD(带有交叉 plt、x86 和 x64 选项)和 Windows(交叉、x86、x64)以及默认情况下发生代码开发时JIT(可以是 PreJIT ngen.exe、econoJIT)

我认为使用 power shell + msbuild 可以处理更多的故障排除。可能对某人有帮助...

于 2017-07-25T14:04:59.377 回答
69

在文本编辑器中打开你的 csproj,看看你是否有一个属性组部分,应该看起来像这样:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Latest|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Latest\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  </PropertyGroup>

你有“最新”的构建配置吗?如果没有将上述部分添加到 csproj。

于 2013-02-28T11:51:47.300 回答
20

正如 perlyking 所提到的,而不是编辑 csproj XML 以下对我有用。这是我使用的步骤。

  1. 打开项目属性。
  2. 选择构建选项卡。
  3. 在输出部分下,检查是否设置了输出路径。(如果没有设置一个,保存项目,它应该可以工作)。
  4. 如果已设置,请单击输出路径的“浏览...”按钮。
  5. 当文件夹选择对话框打开时,在文件浏览器中向上导航一级,然后重新选择输出文件夹并单击“选择文件夹”按钮。
  6. 保存项目属性,它应该可以工作。
于 2015-04-20T12:59:19.660 回答
13

为了补充@James所说的,我发现如果我查看VS2013中的项目编译属性,指定了构建输出路径。但是当我.csproj直接检查文件时,OutputPath相关构建配置的元素丢失了。因此,在 VS 中,我只是简单地对输出路径进行了小幅编辑,然后将其保存,然后将值踢到项目文件中,然后我就可以构建了。

于 2014-10-08T17:53:50.217 回答
3

当我遇到此错误时,我正在使用 MSBuild 构建多个 .sln 文件,并且还添加了一个新步骤来构建 .csproj 文件。

@Saurabh 的回答突出了问题的根源。但是,在修复它时,添加/p:Platform=AnyCPU到 MSBuild Arguments 部分并没有修复它。我实际上需要在构建步骤中更新平台值。

所有其他构建步骤都使用$(BuildPlatform)变量值(恰好是“任何 cpu”,其中有一个空格)。

(如果我一直在构建多个 .csproj 文件,我可能会为 AnyCPU 平台创建第二个变量。)

Visual Studio 构建步骤的屏幕截图

于 2019-02-19T16:21:40.297 回答
1

仅在发布 Web 项目时出现此错误。在设置发布配置文件时,我错误地选择了错误的构建配置。

于 2015-09-11T21:14:28.883 回答
1

在我的情况下,发生此错误是因为输出文件夹包含一个点以使其相对于当前目录。通过删除点解决了问题。

违规行为Build output path是:

.\bin\Output

通过将其更改为解决了该问题

bin\Output

构建输出路径可以在项目属性的选项卡中找到,每个和Build的组合都有不同的路径。ConfigurationPlatform

于 2016-07-20T10:53:57.953 回答
1

我有同样的问题。我已经使用命令行更新了我的 Windows 平台。目前我已更新到 windows@5.0.0 版本。然后你需要搜索文件名“SQLite3.UWP.vcxproj”。尝试将“v141”更改为“v140”。目前我正在使用 Visual Studio 2015 专业版。如果是 Visual Studio 2017,则无需更改 SQLite3.UWP.vcxproj 文件中的版本。

于 2017-09-11T07:39:04.037 回答
1

刚刚在 MSBuild 中遇到了一些服务结构的问题。

第一步是右键单击每个受影响的项目并拉出它们的属性,选择构建选项卡,然后将平台目标设置为 x64。

第二步是进入配置管理器并将每个项目设置为也使用 x64 进行调试和发布。

这是针对 VS2017 项目的。

于 2017-12-20T17:26:06.600 回答
1

此错误具有误导性,可能是由其他问题引起的。检查整个消息:

The OutputPath property is not set for project 'myproject'.  Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='myconfig'  Platform='AnyCPU'.  This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform.

我的构建配置在 csproj 中缺少此节点:

<PlatformTarget>AnyCPU</PlatformTarget>

尽管在下拉列表中说 AnyCPU 是选定的平台,但实际的 xml 并不存在。添加它修复了项目与它所引用的其他项目之间的不匹配。

于 2018-05-17T18:55:18.557 回答
1

我在几个项目中遇到了同样的问题。向项目添加新配置后,PropertyGroup 被添加到项目文件的最后。

在所有其他配置 PropertyGroup 解决了问题之后,将 PropertyGroup 移动到右侧。

我希望这有帮助。

于 2019-06-25T18:01:04.723 回答
1

我有一个稍微不寻常的 SLN/CSPROJ 文件排列:

我有项目文件:

  • A.csproj,配置为“Dev”和“Production”
  • B.csproj,配置为“Dev”和“Production”
  • C.csproj,A 和 B 使用的“通用”库,配置为“Dev”和“Production”

我有 SLN 文件:

  • AC.sln,配置为“Production”——jenkins 使用它来构建项目 A 和公共库
  • BC.sln,配置为“Production”——jenkins 使用它来构建项目 B 和公共库
  • ABC.sln,配置为“Dev” - VS 中的开发人员使用它来编写新代码,而不必不断打开不同的解决方案(这个答案是 55 项目解决方案的简化视图)

我对公共库进行了编辑并引入了对项目 A 的依赖。AC.sln 仍然会在 jenkins 中构建,但 BC.sln 给出了一个错误消息:

未为项目“A.csproj”设置 OutputPath 属性。请检查以确保您为此项目指定了有效的配置和平台组合。配置='调试'平台='AnyCPU'。

最初令人费解是因为我们在任何项目中甚至都没有 Debug 配置;在文件中查找Debug|出现 0 次点击

人类开发人员在 VS 中使用的 ABC.sln 也可以正常构建。构建 BC.sln 给出了 A.dll 未找到的错误

当 C 依赖于 A 的循环不可解​​决问题被移除后,一切又开始工作了

于 2020-01-24T17:31:45.513 回答
1

对我来说,答案是修复Build > Configuration Manager中的所有项目。

如果您有一些名称或平台与解决方案配置不匹配的项目,您应该更改它以使它们都匹配。

在此处输入图像描述

于 2021-09-20T20:15:21.017 回答
0

如果环境变量存在(就像在 HP 笔记本电脑上发生的那样)并且 MSBuild 的目标包含对另一个 Visual Studio 项目的引用,则会出现该项目的OutputPath 属性未设置错误消息。Platform

重命名平台环境变量后,我的构建现在可以工作了。

似乎该参数已/p:Platform="Any CPU"应用于目标解决方案,但并未“结转”到引用的项目。在我的例子中,错误消息表明引用的项目正在使用环境变量Platform=MCD

于 2018-01-25T23:28:11.750 回答
0

我有两个项目配置,DebugRelease. 使用Release构建时,它会抛出此错误。我发现的问题是,在csproj文件中,Debug配置靠近顶部,而Release配置一直在底部。

手动移动Release构建正下方的Debug构建修复它。

我假设我在设置构建配置时做错了什么,因为这感觉不像是我应该手动调整的东西。

于 2018-10-15T14:28:35.613 回答
0

编辑项目的属性:确保“配置属性->常规->输出目录”不为空。注意,这里不叫 OutputPath。您可能可以从中间目录复制值。

于 2020-02-04T21:36:47.073 回答