Visual Studio 命令行 (devenv) 和 IDE 构建有啥区别?

Posted

技术标签:

【中文标题】Visual Studio 命令行 (devenv) 和 IDE 构建有啥区别?【英文标题】:What are the differences between Visual Studio command line (devenv) and IDE builds?Visual Studio 命令行 (devenv) 和 IDE 构建有什么区别? 【发布时间】:2017-12-11 11:51:43 【问题描述】:

我正在尝试使用来自 Python 源的标准工具集 (v100) 构建 Python 2.7 核心 dll,包括一些用于 VS2010 的标准模块:

https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz

在为外部库提供本地版本(最初,这些是在构建期间使用 svn 调用请求)并调整属性文件以使用正确的 v100 工具集之后,IDE 可以构建正确的 python dll,以及 pyd 和使用提供的 pcbuild.sln 为我的用例(x64 调试和发布版本)提供提到的外部项目(sqlite、openssl 等)的 dll。

但这不适用于使用 devenv.com/.exe 构建的命令行。我知道,msbuild 会产生差异,但我从来没有听说过像我这样的 devenv 调用(总是来自同一个干净的源代码树,提前调用正确的vcvarsall.bat amd64):

devenv pcbuild.sln /Build "Relase|x64"

python27.dll 将被创建,但几乎所有额外的外部库都不存在,部分不存在(没有 pyd)或以完全不同的方式打包(例如,sqlite 的导出位于文件 python.dll 中) ,从 IDE 构建时不会创建)。

有人知道一般解释这些差异的文档吗?此刻,我什至不知道从哪里开始,以便分析问题(除了为 devenv 调用生成带有/out 的日志文件)。

【问题讨论】:

【参考方案1】:

在以交互方式更改 devenv 调用后,打开的解决方案文件将所有项目重命名为“python”。

罪魁祸首是调用批处理文件,将环境变量 PROJECTNAME 定义为“python”。显然,这会与 VS 宏 $(ProjectName) 发生冲突。

【讨论】:

以上是关于Visual Studio 命令行 (devenv) 和 IDE 构建有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

在 jenkins 的 Visual Studio for Linux 项目上运行 devenv 时未定义的远程主机

Visual Studio 2012 命令行构建 - 检测构建失败

如何从 GitHub 操作中升级 Visual Studio 项目?

Visual Studio 很卡重置初始状态

使用以前版本的 Visual Studio 的 devenv 从 VS2017 测试 Visual Studio 扩展不起作用

Visual Studio 2008 devenv 运行应用程序,然后离开幽灵