Visual Studio命令行(devenv)和IDE构建之间有什么区别?

时间:2017-12-11 11:51:44

标签: python-2.7 visual-studio-2010 msbuild devenv

我正在尝试构建一个Python 2.7核心DLL,包括一些VS2010的标准模块,以及来自Python源代码的标准工具集(v100):

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 个答案:

答案 0 :(得分:0)

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

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