【问题标题】:Error MSB4126: The specified solution configuration "release|any cpu" is invalid错误 MSB4126:指定的解决方案配置“release|any cpu”无效
【发布时间】:2018-08-17 19:42:55
【问题描述】:

我已经为我的一个客户端应用程序设置了 devops 流程。它在构建和发布级别上运行良好。但是几天后突然我的构建失败并出现以下错误。

node_modules\uws\build\binding.sln.metaproj(0,0): 错误 MSB4126: 指定的解决方案配置“release|any cpu”无效。请使用配置和平台属性(例如 MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform="Any CPU")指定有效的解决方案配置,或将这些属性留空以使用默认解决方案配置。

谁能告诉我如何解决这个问题?

【问题讨论】:

  • 你的项目是什么类型的?是网站应用吗?
  • @Marina,是的,它是一个 Angualr2 应用程序。
  • 如果在 VS Build 任务中更改为 **\*.publishproj 而不是 **\*.sln 怎么办?
  • @MarinaLiu-MSFT,谢谢你为我提供了很多帮助,但我在 VS 构建任务中犯了错误,即我在 VS 构建任务中使用了 ***.sln 而不是使用 .sln(对于例如 InnovationApp.sln)。
  • 当然。对于 VS Build 任务,您应该通过path/to/name.sln**\*.sln 指定解决方案。我用.sln 只是代表解决方案文件。

标签: azure-devops node-modules devops azure-pipelines


【解决方案1】:

您可以使用 PowerShell 任务 更改 .sln 文件。

假设你要构建网站项目以外的项目,那么你可以删除.sln文件GlobalSection中的网站项目信息。

先决条件:

获取要移除的项目ID,格式为ECF93D95-5096-497E-B4B8-83416DABB516

然后添加一个 PowerShell 任务 before VS 构建任务来构建其他项目。脚本为:

git checkout $(BUILD.SOURCEBRANCHNAME)
(get-content "$(Build.SourcesDirectory)\relative\path\to\solution") -notmatch "{project_ID}.$(BuildConfiguration)" | out-file "$(Build.SourcesDirectory)\relative\path\to\solution"

如以下示例从.sln 文件中删除项目ECF93D95-5096-497E-B4B8-83416DABB516

git checkout $(BUILD.SOURCEBRANCHNAME)
(get-content "$(Build.SourcesDirectory)\ConsoleAppCore\ConsoleAppCore.sln") -notmatch "{ECF93D95-5096-497E-B4B8-83416DABB516}.$(BuildConfiguration)" | out-file "$(Build.SourcesDirectory)\ConsoleAppCore\ConsoleAppCore.sln"

在 VS Build 任务之后,您可以添加另一个 PowerShell 任务以将更改的 .sln 恢复为 git repo 中的相同版本。脚本为:

git reset --hard head

除其他项目外,搭建网站项目,同样的方式可以跳过该项目进行搭建。

注意:对于 PowerShell 任务,请取消选择 Fail on Standard Error 选项。

【讨论】:

  • 我尝试使用上述解决方案,但出现类似“[error]Switched to a new branch 'integration' Branch integration set to track remote branch integration from origin。[error]Process completed退出代码为 0 并且有 1 个错误写入错误流。##[section]Finishing: PowerShell Script for Remove the Angular Project"
  • 抱歉提醒和延误。您应该在 Powershell 任务中取消选择“标准错误失败”选项。你可以再试一次。
  • @pradeep 你跳过构建项目成功了吗?
  • 抱歉延迟回复。谢谢@Marina,通过看到您更新的答案,我解决了我的问题。
【解决方案2】:

我认为最好的选择是使用多个针对项目组的解决方案(分区解决方案) 这是获取更多信息的链接

Partitioned Solution

我也在很多开源项目中实现,这里是其中之一

Project on GitHub using Partitioned Solution

【讨论】:

  • 目前我在构建定义中使用了两个 VS 构建任务,一个用于 Angular2 应用程序,另一个用于整个解决方案文件。但是在第二个 VS Build 任务中,我面临同样的问题,因为包含了 Angular2 项目。那么,能否请您告诉我如何在第二个 VS 构建任务中删除 angular2 项目?
  • 创建不包含 Angular2 项目的新解决方案
  • 这是一个生产应用程序,所以我现在不能单独做。实际上,相同的解决方案将持续到昨天,但从昨天开始就面临问题。
【解决方案3】:

我在使用VSTS 时遇到过这个问题。我建议你直接使用MSBuild 参数

何添加到MSBuild 参数:

/p:Configuration=$(BuildConfiguration) /p:Platform="$(BuildPlatform)"

注意:将平台和配置留空

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 2015-12-26
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多