构建我的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>
答案 0 :(得分:47)
在文本编辑器中打开你的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。
答案 1 :(得分:30)
我已经弄清楚它是如何工作的(不改变VS2013 / 2015中的sln / csproj属性)。
/p:ConfigurationPlatforms=Release /p:Platform="Any CPU"
/p:Configuration=Release /p:Platform=AnyCPU
"Any CPU"
vs AnyCPU
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可以处理更多故障排除。可能对某人有帮助......
答案 2 :(得分:12)
正如perlyking所提到的,而不是编辑csproj XML以下对我有用。以下是我使用的步骤。
答案 3 :(得分:6)
要添加@James所说的内容,我发现如果我查看VS2013中的项目编译属性,则指定构建输出路径 。但是当我直接检查.csproj
文件时,相关构建配置缺少OutputPath
元素。所以在VS中,我只是简单地对输出路径进行了一次小的编辑,保存了它,然后将值放入项目文件中,然后我就可以构建了。
答案 4 :(得分:1)
只有在我发布我的网络项目时才会出现此错误。在设置发布配置文件时,我错误地选择了错误的构建配置。
答案 5 :(得分:1)
在我的情况下发生此错误是因为输出文件夹包含一个点,使其相对于当前目录。通过删除点来解决问题。
违规Build output path
是:
.\bin\Output
通过将其更改为
解决了问题 bin\Output
可以在项目属性的Build
标签中找到构建输出路径,Configuration
和Platform
的每个组合都有不同的路径。
答案 6 :(得分:1)
我有同样的问题。我使用命令行更新了我的Windows平台。目前我已经更新到windows@5.0.0版本。然后你需要搜索文件名&#34; SQLite3.UWP.vcxproj&#34;。尝试改变&#34; v141&#34;到&#34; v140&#34;。目前我正在使用Visual Studio 2015专业版。如果是Visual Studio 2017,则无需在SQLite3.UWP.vcxproj文件中更改版本。
答案 7 :(得分:1)
在MSBuild中遇到了一些服务结构问题。
第一步是右键单击每个受影响的项目并提取其属性,选择“构建”选项卡,然后将平台目标设置为x64。
第二步是进入配置管理器并将每个项目设置为也使用x64进行调试和发布。
这是针对VS2017项目的。
答案 8 :(得分:1)
我在一些项目上遇到了同样的问题。在向项目添加新配置后,将PropertyGroup添加到Project文件的末尾。
在所有其他配置之后,将PropertyGroup移到右侧PropertyGroup解决了该问题。
我希望这会有所帮助。
答案 9 :(得分:1)
我在使用SLN / CSPROJ文件排列时有些异常:
我有项目文件:
我有SLN文件:
我对公共库进行了编辑,并引入了对项目A的依赖。AC.sln仍将以jenkins的形式构建,但BC.sln给出了一个错误消息:
未为项目'A.csproj'设置OutputPath属性。请检查 确保您指定了配置和平台的有效组合 对于这个项目。配置=“调试”平台=“任何CPU”。
最初令人困惑,因为我们甚至在任何项目的任何地方都没有Debug配置。在Debug|
的文件中找到0个匹配项
ABC.sln也可以构建良好。构建BC.sln时出现错误,找不到A.dll
当消除了取决于A的C的不可解决的圆形问题后,一切又重新开始工作
答案 10 :(得分:0)
未为项目设置 OutputPath属性如果存在Platform
环境变量(如HP笔记本电脑上似乎发生的那样),并且MSBuild的目标包含对另一个Visual Studio项目。
重命名平台环境变量后,我的构建现在可以正常工作。
似乎参数/p:Platform="Any CPU"
已应用于目标解决方案,但不会“遗留”到引用的项目。在我的实例中,错误消息表明引用的项目正在使用环境变量Platform=MCD
。
答案 11 :(得分:0)
此错误具有误导性,可能由其他问题引起。检查整个消息:
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并不存在。添加它修复了项目与它引用的其他项目之间的不匹配。
答案 12 :(得分:0)
我有两个项目配置,Debug
和Release
。使用Release
构建时,它抛出此错误。我发现的问题是,在csproj
文件中,Debug
配置位于顶部附近,而Release
配置位于底部。
手动将Release
构建移动到Debug
构建之下,将其修复。
我假设我在设置构建配置时做错了某些事情,因为这似乎不应该手动调整。
答案 13 :(得分:0)
当我遇到此错误时,我正在使用MSBuild来构建多个.sln文件,并且还添加了一个新步骤来构建.csproj文件。
@Saurabh的answer突出了问题的根源。但是,修复它时,在MSBuild Arguments部分中添加/p:Platform=AnyCPU
并不能解决问题。实际上,我实际上需要在构建步骤中更新Platform值。
所有其他构建步骤均使用$(BuildPlatform)
变量值(恰好是“ any cpu”,其中带有空格)。
(如果我正在构建多个.csproj文件,我可能会为AnyCPU平台创建第二个变量。)
答案 14 :(得分:0)
编辑项目的属性: 确保“配置属性->常规->输出目录”不是空白。注意,这里不称为OutputPath。您可能可以从“中间目录”中复制值。