我目前正在开发一个控制台应用程序,它将传递一个vcxproj文件并使用GCC编译它。不幸的是,我很快就遇到了一大堆问题。
我注意到一堆目录快捷方式,例如:
VCTargetsPath
VCInstallDir
SolutionDir
PROJECTDIR
UserRootDir
等等。
MSBuild从哪里获取这些值?我假设它们是为MSBuild进程设置的环境变量(毕竟已知的环境变量以相同的方式处理,即“$(...)”)。这是一个糟糕的假设,所以我想知道我是如何得到这些的。有没有人对此有任何想法?
任何信息都将非常感激:)
答案 0 :(得分:3)
MSBuild可执行文件(和从属DLL)以与处理构建文件中的任何其他属性相同的方式处理这些属性。在这种情况下,它们只是显式查找的预定义属性。
如果您真的想深入研究它,请打开Reflector中的Microsoft.Build.dll
并查找Microsoft.Build.Construction.SolutionProjectGenerator.AddGlobalProperties(...)
方法,以了解它如何处理一些众所周知的属性。
作为补充说明,请确保完全向下导航Import指令并使用每个Import处理属性和项值的覆盖。 Visual Studio构建中有许多属性和项目,这些属性和项目并不总是正确编译代码所必需的。
答案 1 :(得分:2)
我认为这些与Visual Studio宏绑定:MSDN
答案 2 :(得分:2)
其中一些是由文件的位置定义的
其他由MSVC安装的位置定义
C:\Program Files\Microsoft Visual Studio 8\VC
依此类推,并根据你加载的内容在msbuild内部。