加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:29:15 所属栏目:百科 来源:网络整理
导读:我有一个.sln文件,里面有几个项目.为了保持这个简单,我们称之为…… ProjectA ProjectB ProjectC …其中A是引用B和C的主项目.我的目标是更新我的构建脚本,为ProjectA生成XML“Intellisense”文档文件,而不提供有关B和C缺少文档的构建警告. 当前构建脚本 我有
我有一个.sln文件,里面有几个项目.为了保持这个简单,我们称之为……

> ProjectA
> ProjectB
> ProjectC

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

当前构建脚本

我有一个MSBuild脚本,在构建步骤中包含以下内容:

<PropertyGroup>
    <CustomOutputPath>C:buildoutput&;/CustomOutputPath>
</PropertyGroup>
<ItemGroup>
    <Projects Include="ProjectAProjectA.csproj">
        <Properties>OutputPath=$(CustomOutputPath)</Properties>
    </Projects>
</ItemGroup>
<MSBuild Projects="@(Projects)" />

(ItemGroup中实际列出了多个项目,但同样,让我们??保持这个简单.)

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

我最接近的……

如果我将“DocumentationFile”属性添加到我的项目条目中……

<ItemGroup>
    <Projects Include="ProjectAProjectA.csproj">
        <Properties>OutputPath=$(CustomOutputPath);DocumentationFile=ProjectA.xml</Properties>
    </Projects>
</ItemGroup>

…然后’ProjectA.xml’出现在“CustomOutputPath”中.但是,我还在项目文件夹中为所有三个项目获取名为“ProjectA.xml”的文件:

> ProjectA / ProjectA.xml
> ProjectB / ProjectA.xml
> ProjectC / ProjectA.xml

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

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

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

解决方法

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

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

另一个解决方案 – 在构建所有项目之后立即清理所有不必要的doc文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读