gpt4 book ai didi

c++ - MSBuild ProjectReference 项文档

转载 作者:IT老高 更新时间:2023-10-28 23:01:35 25 4
gpt4 key购买 nike

我在 MSBuild 项目中找不到有关 ProjectReference 标记的文档。我在哪里可以阅读它的详细说明?

编辑:我有一个由其他人创建的 .vcxproj 。它包含 ProjectReference 项。 ProjectReference 包含子标签:PrivateReferenceOutputAssemblyCopyLocalSatelliteAssembliesLinkLibraryDependencies UseLibraryDependencyInputs。我在哪里可以阅读这些标签?它们可以包含哪些值? ProjectReference 还可以包含哪些其他子标签?

我在 MSDN 和 Google 中搜索过,但没有找到文档页面,只有关于其他产品的讨论和文档,而不是 MSBuild。

最佳答案

从 Jason Pyeron 在评论中提供的 MSBuild 源代码链接开始,我了解到当 MSBuild 准备构建依赖项时,it includes all item metadata (您称为子标签的内容)来自每个 ProjectReference 项。因此,下游任务和目标可以并且有时确实可以读取任意 ProjectReference 元数据。

有关 C++ 项目的问题的答案,您可以检查 Microsoft.CppBuild.targetsMicrosoft.CppCommon.targets(它们在 MSBuild 14 中的默认路径,与Visual Studio 2015 是 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\)。然而,如下例所示,这样做并不简单:

  1. Microsoft.CppBuild.targets 中,Target ResolvedXDCMake 动态创建 _ResolvedNativeProjectReferencePaths 项。
  2. 目标 ComputeReferenceLinkInputs 从这些项目中动态创建 ProjectReferenceToLink 项目。
  3. 对于每个没有 CopyLocal 元数据的项目,相同的 Target 添加它,复制任何 Private 元数据值。
  4. 对于每个具有不同路径的项目,同一目标会动态创建一个 Link 项目。
  5. 现在切换到 Microsoft.CppCommon.targetsLink 项在 LinkSources 参数中传递> Link 目标中的任务!虽然公平地说,它们的元数据在上一步中已被清除,因此在这种特殊情况下,您不必深入研究 Link 目标文档。

以下是与您的问题相关的其他部分:

参数

  • 包含(属性):项目文件的路径
  • Project(元数据):项目 GUID,格式为 {00000000-0000-0000-0000-000000000000}
  • ReferenceOutputAssembly(元数据): bool 值,指定是否引用的项目的输出应传递给编译器。默认为 true。
  • SpecificVersion(元数据):是否应使用程序集的确切版本。
  • Targets(元数据):应构建的引用项目中以分号分隔的目标列表。默认为$(ProjectReferenceBuildTargets)的值,默认为空,表示默认目标。
  • OutputItemType(元数据):要向其中发出目标输出的项目类型。默认为空白。如果 ReferenceOutputAssembly 设置为“true”(默认),那么目标输出将成为编译器的引用。
  • EmbedInteropTypes(元数据):可选 bool 值。此引用中的类型是否需要嵌入到目标程序集中 - 仅限互操作程序集

备注

当使用 OutputItemType 参数时,其他参数(元数据)可能适用。例如,当 OutputItemType 设置为 Content 时,可以使用 CopyToOutputDirectory:

  • CopyToOutputDirectory(元数据):可选字符串。确定是否将文件复制到输出目录。值:从不始终PreserveNewest

关于c++ - MSBuild ProjectReference 项文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com