Visual Studio 命令行 (devenv) 和 IDE 构建之间有什么区别?
What are the differences between Visual Studio command line (devenv) and IDE builds?
我正在尝试构建一个 Python 2.7 核心 dll,包括一些用于 VS2010 的标准模块以及来自 Python 来源的标准工具集 (v100):
https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
在为外部库提供本地版本后(最初,这些是在构建期间使用 svn 调用请求的)并调整 属性 文件以使用正确的 v100 工具集,IDE 可以使用提供的 pcbuild.sln 为我的用例(x64 调试和发布版本)构建正确的 python dll,以及那里提到的外部项目(sqlite、openssl 等)的 pyd 和 dll。
但这不适用于使用 devenv.com/.exe 构建的命令行。我知道,msbuild 会产生差异,但我从来没有听说过像我这样的 devenv 调用(总是来自同一个干净的源代码树,提前调用正确的 vcvarsall.bat amd64
):
devenv pcbuild.sln /Build "Relase|x64"
python27.dll 将被创建,但几乎所有额外的外部库都不存在,部分不存在(没有 pyd)或以完全不同的方式打包(例如,sqlite 的导出位于文件 python.dll,它不是在从 IDE).
构建时创建的
有人知道一般解释这些差异的文档吗?此时此刻,我什至不知道从哪里开始,以便分析问题(除了为 devenv 调用生成一个带有 /out
的日志文件)。
在交互中更改 devenv 调用后,打开的解决方案文件将所有项目重命名为 'python'。
罪魁祸首是调用批处理文件,将环境变量 PROJECTNAME 定义为 'python'。显然,这会与 VS 宏 $(ProjectName) 产生冲突。
我正在尝试构建一个 Python 2.7 核心 dll,包括一些用于 VS2010 的标准模块以及来自 Python 来源的标准工具集 (v100):
https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
在为外部库提供本地版本后(最初,这些是在构建期间使用 svn 调用请求的)并调整 属性 文件以使用正确的 v100 工具集,IDE 可以使用提供的 pcbuild.sln 为我的用例(x64 调试和发布版本)构建正确的 python dll,以及那里提到的外部项目(sqlite、openssl 等)的 pyd 和 dll。
但这不适用于使用 devenv.com/.exe 构建的命令行。我知道,msbuild 会产生差异,但我从来没有听说过像我这样的 devenv 调用(总是来自同一个干净的源代码树,提前调用正确的 vcvarsall.bat amd64
):
devenv pcbuild.sln /Build "Relase|x64"
python27.dll 将被创建,但几乎所有额外的外部库都不存在,部分不存在(没有 pyd)或以完全不同的方式打包(例如,sqlite 的导出位于文件 python.dll,它不是在从 IDE).
构建时创建的有人知道一般解释这些差异的文档吗?此时此刻,我什至不知道从哪里开始,以便分析问题(除了为 devenv 调用生成一个带有 /out
的日志文件)。
在交互中更改 devenv 调用后,打开的解决方案文件将所有项目重命名为 'python'。
罪魁祸首是调用批处理文件,将环境变量 PROJECTNAME 定义为 'python'。显然,这会与 VS 宏 $(ProjectName) 产生冲突。