未为项目设置OutputPath属性


78

构建我的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>

您是否尝试过从命令行传递OutputPath的属性?我认为在项目的某个位置,该属性组是错误的或丢失的。
James Woolfenden

Answers:


60

在文本编辑器中打开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中。


27
这个答案如何?这是一个不同于所提问题的问题。
Blue Clouds'Mar

12
也许您只是不明白那就是答案。
詹姆斯·伍尔芬登

8
我有几次相同的问题。但是我确实有配置PropertyGroup,是问题吗?它几乎位于文件的底部...无论如何,我在默认的“ Debug | AnyCPU”配置之后将其移至顶部,并且达到了目的。
a4bike

2
@AlLelopath您应该只添加一个新的属性组部分,而不要编辑现有的属性组部分。
哈佛

6
对我来说,csproj文件还可以。问题没有传递到''/ p:Platform = AnyCPU''请参阅@saurabh答案传递平台参数
Johnny

74

我已经弄清楚了它是如何工作的(在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,测试coverage(NCover)目标以及MSBUILD的位置是否正确。就我而言:
    1. C:\Windows\Microsoft.NET\Framework64\v4.0.30319 但是它可能会有所不同,因为您可以看到Microsoft提供了6个cmd选项来构建代码库:: AMD(带有cross plt,x86和x64选项)和Windows(cross,x86,x64),并且当默认情况下发生代码开发时JIT(可以是PreJIT ngen.exe,econoJIT)

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


7
我希望这个回应能获得更多的选票。我已经正确设置了配置,问题是执行(在构建机器上)构建时没有传递'/ p:Platform = AnyCPU'参数。通过论点解决了这个问题。感谢@Saurabh
Johnny

一切都已正确设置在我的proj文件中。这个答案是这个难题的缺失部分。谢谢!
理查德

也为我工作。.csproj文件已全部设置。只需传递该Platform参数即可。干杯
vexe

2
那个空间!在TFS 2017中,我必须转到构建的变量选项卡,然后将“ Any CPU”更改为“ AnyCPU”
Jim

1
空间与无空间的问题是我的问题。他们到底为什么要做出这种区分?啊!
Craig W.

17

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

  1. 打开项目属性。
  2. 选择构建选项卡。
  3. 在“输出”部分下,检查是否设置了输出路径。(如果未设置,请保存该项目,它应该可以正常工作)。
  4. 如果已设置,请单击输出路径的“浏览...”按钮。
  5. 当文件夹选择对话框打开时,在文件浏览器中上一层浏览,然后重新选择输出文件夹,然后单击“选择文件夹”按钮。
  6. 保存项目属性,它应该可以工作。

1
谢谢!这对我有用。我认为这需要刷新,因为我重命名了构建配置
ozz 2016年

重命名我的构建配置后,我也有这个。我不需要手动更改.csproj文件,但确实需要退出VS2015,然后再返回VS2015。然后它起作用了(叹气..!)
Mike Gledhill

令人难以置信,但是这项工作,我选择了上一级文件夹,然后再次选择调试文件夹(与选择的文件夹相同)并且可以工作。谢谢。
毛里

这仅对我
有用,

10

为了补充@James所说的内容,我发现如果查看VS2013中的项目Compile属性,指定了Build Output Path 。但是,当我.csproj直接检查文件时,OutputPath相关构建配置中缺少该元素。因此,在VS中,我只需对输出路径进行次要编辑并将其反转即可,将其保存,然后将值插入项目文件中,然后就可以构建了。


2
5年后... VS2019,这仍然是一个问题-此修复程序仍然有效。谢谢。
GeoffM

1

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


1

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


1

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

冒犯的Build output path是:

.\bin\Output

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

bin\Output

构建输出路径可以在找到Build项目属性的选项卡,并且对于的每个组合不同的路径ConfigurationPlatform


1

刚刚在MSBuild中出现了一些服务结构问题。

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

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

这是针对VS2017项目的。


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不存在。添加它可以修复项目与它所引用的其他项目之间的不匹配。


1

我使用MSBuild生成多个.sln文件,并在遇到此错误时添加了一个新步骤来生成.csproj文件。

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

所有其他构建步骤均使用$(BuildPlatform)变量值(恰好是“ any cpu”,其中带有空格)。

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

Visual Studio Build步骤的屏幕截图


1

我在几个项目上遇到了同样的问题。在向项目添加新配置后,将PropertyGroup添加到Project文件的末尾。

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

我希望这有帮助。


1

我使用了一种稍微不寻常的SLN / CSPROJ文件排列:

我有项目文件:

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

我有SLN文件:

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

我对公共库进行了编辑,并介绍了对项目A的依赖关系。AC.sln仍将在jenkins中构建,但BC.sln给出了一个错误:

没有为项目“ A.csproj”设置OutputPath属性。请检查以确保为该项目指定了配置和平台的有效组合。配置=“调试”平台=“任何CPU”。

最初令人困惑,因为我们甚至在任何项目的任何地方都没有Debug配置。在文件中查找Debug|出现0个匹配项

人类开发人员在VS中使用的ABC.sln也可以构建良好。生成BC.sln时出现错误,未找到A.dll

当消除了取决于A的C的不可解决的圆形问题后,一切又重新开始工作


0

OutputPath属性未设置项目的错误信息,如果会出现Platform环境变量存在(似乎对惠普笔记本电脑的情况发生)和MSBuild的目标包含对另一个Visual Studio项目的引用。

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

似乎参数已/p:Platform="Any CPU"应用到目标解决方案,但没有“传递”到引用的项目。在我的实例中,错误消息指示引用的项目正在使用环境变量Platform=MCD


0

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

手动将Release构建移动到构建下方即可Debug修复它。

我以为我在设置构建配置时做错了什么,因为这感觉我不应该手动调整。


0

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

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.