如何通过 devenv.exe\com 构建具有平台配置的项目?

Posted

技术标签:

【中文标题】如何通过 devenv.exe\\com 构建具有平台配置的项目?【英文标题】:How build a project with platform configuration via devenv.exe\com?如何通过 devenv.exe\com 构建具有平台配置的项目? 【发布时间】:2018-10-31 12:40:49 【问题描述】:

我正在尝试通过 devenv.com 构建解决方案,但出现错误。我使用的命令:

set devenvCom=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.com  
"%devenvCom%" "C:\...\mySolution.sln" /Build "Release|AnyCPU"  

我收到一个错误:“操作无法完成” 但是如果我在没有平台配置的情况下运行它:

set devenvCom=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.com  
"%devenvCom%" "C:\...\mySolution.sln" /Build "Release"  

这很好用。

但在他们的文档中,他们说您可以使用以下格式:/Build "Release|AnyCPU" 如果我使用 devenv.exe 或 devenv.com 运行命令,它们都失败了,这并不重要。

如何成功运行命令?

【问题讨论】:

这似乎非常违反直觉且不必要。您希望通过手动设置构建信息而不是仅使用内置的Build... 选项(F5)来实现什么? 我正在尝试离线构建解决方案。我想控制我正在构建的平台并将其作为参数传递给命令。一旦我让它工作 您无需在线即可使用Build... 选项。 iirc 在Build 选项卡中有一个菜单,可让您编辑构建参数。 是的,但是如果您想在多个平台上批量离线构建而不打开GUI并手动设置构建配置怎么办?我的意思是一旦你构建“Win32”然后“x64”等...... 使用任何一种方法,您仍然必须构建、移动可执行文件及其依赖项,然后手动更改设置。 【参考方案1】:

根据https://docs.microsoft.com/en-us/visualstudio/ide/reference/build-devenv-exe?view=vs-2017 的 Microsoft 文档,在 Visual Studio 2017 中,您在两个命令中的语法(无论有无平台)对于 devenv.com 都是正确的。

我通过作为 Jenkins 作业一部分运行的批处理文件在 VS2019 中使用 devenv.com 毫无困难地运行类似的命令。

以下说明可能有助于解决此问题:

在为文件或文件夹路径定义环境变量时,我建议使用如下双引号:

set "devenvCom=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.com"

这些双引号可以更轻松地确保您没有错误地将任何尾随空格添加到环境变量值中。双引号还确保路径中的任何括号或 & 符号不会被 cmd.exe shell 误解。

/Build 后面的参数可以双引号,例如/构建“发布”。这些双引号在指定平台(例如 /Build "Release|AnyCPU")时是必需的,以确保 cmd.exe shell 不会误解竖线,或者当构建配置名称包含一个空格。

在执行自动构建时,我推荐 /Rebuild 而不是 /Build。只有前者才能保证从头开始执行完整的构建。

Microsoft documentation states "在同一行的开关和参数之间插入一个空格字符",即在 /Build 参数和它后面的值之间放置一个空格,例如“释放|AnyCPU”

构建配置和平台的名称,例如“Release|AnyCPU”,应在指定的解决方案文件中找到。这些解决方案构建配置名称和平台不必与项目构建配置名称和平台相对应(尽管它们应该尽可能)。

如果您希望只构建单个项目,我在 VS2019 中使用以下语法已经成功:

"%devenvCom%" "C:\...\myProject.vcxproj" /Build "Release|AnyCPU" /Project "myProject"

请注意,上面示例中的第一个参数是项目文件,而不是解决方案文件。我相信指定的构建配置和平台是指项目而不是未指定的解决方案(注意:Visual Studio在执行单个项目构建时可能会创建一个临时解决方案,如果它不能找到与指定项目对应的解决方案。

对于单个项目构建,我之前成功指定了解决方案文件,然后是 /Project 之后的项目文件,但是这种先前的语法在 VS2019 build 16.11.2 中并没有始终如一地成功 - 它可以导致 devenv.exe 在项目成功构建后无限期运行(devenv.exedevenv.com 启动)。

您的 VS2017 安装可能已损坏,或者您的扩展程序可能会干扰 VS2017。

【讨论】:

以上是关于如何通过 devenv.exe\com 构建具有平台配置的项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone SDK 中单击按钮时水平滚动 ScrollView

我们如何使分隔线高度等于 SWIFT UI 小部件中水平堆栈的另一个子级

用FlexboxLayout构建灵活的布局

如何在 C# 中构建结构列表数组(具有预定义的数组大小)

如何在 Android 中水平滚动 ImageView?

如何在iOS swift中水平滚动图像