【问题标题】:Parsing VS2010 MSBuild vcxproj file解析VS2010 MSBuild vcxproj文件
【发布时间】:2010-11-04 17:06:20
【问题描述】:

我目前正在开发一个控制台应用程序,它将传递一个 vcxproj 文件并使用 GCC 对其进行编译。不幸的是,我几乎立即就遇到了一大堆问题。

我注意到一堆目录快捷方式,例如:

VCTargetsPath
VCInstallDir
解决方案目录
项目目录
用户根目录

等等。

MSBuild 从哪里获得这些值?我假设它们是为 MSBuild 进程设置的环境变量(毕竟已知的环境变量以相同的方式处理,即“$(...)”)。这是一个糟糕的假设,所以我想知道我到底是怎么做到的。有人对此有任何想法吗?

任何信息将不胜感激:)

【问题讨论】:

    标签: c++ visual-studio-2010 parsing gcc msbuild


    【解决方案1】:

    MSBuild 可执行文件(和相关 DLL)处理这些属性的方式与处理构建文件中的任何其他属性的方式相同。在这种情况下,它们只是它显式查找的预定义属性。

    如果您真的想深入研究它,请在 Reflector 中打开 Microsoft.Build.dll 并查找 Microsoft.Build.Construction.SolutionProjectGenerator.AddGlobalProperties(...) 方法以了解它如何处理一些众所周知的属性。

    作为附加说明,请确保您完全向下导航 Import 指令并处理每个 Import 对属性和项值的覆盖。有许多属性和项是 Visual Studio 构建的一部分,但您的代码并不总是需要正确编译。

    【讨论】:

    • 干杯这是非常有趣的信息。不过,我应该指出,我并没有真正准备好连接 MSBuild 并插入我自己的构建方法。我只是想解析 vcxproj 文件以从使用 GCC(而不是 MSVC)的那些文件中生成我自己的代码。 ..我不完全确定反射信息将如何帮助我...目前我正在使用“NMAKE”构建并通过我自己的应用程序,然后解析 sln 和 vcproj,理想情况下,生成我GCC 在最后构建了代码。我的想法是我可以从 VSttudio 构建其他平台,包括 Android 和 MacOSX。
    • 有趣的是,似乎唯一没有提前定义的是“VCTargetsPath”和一堆 MSBuild 特定的。其余的几乎都可以在包含的各种 .props 文件中找到。 MSBuild 是在 MSDN 中定义的,而 VCTargetsPath 是在注册表中定义的。
    【解决方案2】:

    我相信这些与 Visual Studio 宏相关:MSDN

    【讨论】:

    • 我很清楚这一点。但是看到 MSbuild 可以抓住它们..这意味着我必须能够...如何?
    【解决方案3】:

    其中一些是由文件的位置定义的

    • SolutionDir - 包含此项目的解决方案 (.sln) 文件的目录
    • ProjectDir - 包含项目文件(.vcproj、.vcxproj)的目录

    其他由 MSVC 安装位置定义

    • VCInstallDir - 安装 Visual Studio 的 Visual C 部分的位置。 IE。 C:\Program Files\Microsoft Visual Studio 8\VC

    等等,根据您加载的内容将在 msbuild 内部。

    【讨论】:

      猜你喜欢
      • 2012-07-18
      • 2016-09-16
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      相关资源
      最近更新 更多