gpt4 book ai didi

MSBuild:为主项目生成 XML 文档,但不为依赖项目生成 XML 文档

转载 作者:行者123 更新时间:2023-12-02 11:16:10 30 4
gpt4 key购买 nike

我有一个 .sln 文件,里面有几个项目。为了简单起见,让我们称它们为...

  • 项目A
  • 项目B
  • 项目C

  • ...其中 A 是引用 B 和 C 的主要项目。我的目标是更新我的构建脚本,为 ProjectA 生成一个 XML“Intellisense”文档文件,而不给出有关 B 和 C 缺少文档的构建警告。

    当前构建脚本

    我有一个 MSBuild 脚本,它在构建步骤中包含以下内容:
    <PropertyGroup>
    <CustomOutputPath>C:\build\output\</CustomOutputPath>
    </PropertyGroup>
    <ItemGroup>
    <Projects Include="ProjectA\ProjectA.csproj">
    <Properties>OutputPath=$(CustomOutputPath)</Properties>
    </Projects>
    </ItemGroup>
    <MSBuild Projects="@(Projects)" />

    (实际上在 ItemGroup 中列出了多个项目,但同样,让我们​​保持简单。)

    当我运行构建脚本时,它足够聪明,可以为我编译 B、C 和 A,即使我只指定了 A。所有输出都出现在“CustomOutputPath”位置。

    我得到的最接近的...

    如果我将“DocumentationFile”属性添加到我的项目条目中...
    <ItemGroup>
    <Projects Include="ProjectA\ProjectA.csproj">
    <Properties>OutputPath=$(CustomOutputPath);DocumentationFile=ProjectA.xml</Properties>
    </Projects>
    </ItemGroup>

    ...然后“ProjectA.xml”出现在“CustomOutputPath”中。但是,我还在所有三个项目的项目文件夹中获得了名为“ProjectA.xml”的文件:
  • 项目A/项目A.xml
  • 项目B/项目A.xml
  • ProjectC/ProjectA.xml

  • 这些文件包含各自项目的“Intellisense”文档,即使它们都被命名为“ProjectA.xml”。

    这会在项目文件夹中创建不需要的和误导性命名的文件,并且(更重要的是)为 B 和 C 中缺少的文档注释生成构建警告。我不想向这些项目添加文档注释,所以我更喜欢找到一种方法让 MSBuild 只为 ProjectA 生成文档。

    任何人都可以提供任何见解或替代解决方案吗?

    最佳答案

    根据我的发现 - DocumentationFile 是一个全局级别的属性(并将用于创建 DocFileItem - 全局级别的项目列表)。根据我的理解,您将无法在单个逻辑脚本中以任何简单的方式更改它。

    您可以做的是在单独的文件中定义特殊目标,该文件将导入每个项目文件(直接编辑项目文件或使用 $CustomBeforeMicrosoftCommonTargets 等属性),这些文件将使用项目相关的值覆盖 DocumentationFile。
    因此,您可能可以为不同的项目生成不同的文档文件名。

    另一个解决方案 - 在构建所有 projs 后立即清理所有不必要的 doc 文件。

    关于MSBuild:为主项目生成 XML 文档,但不为依赖项目生成 XML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18322245/

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