如何为具有多个目标的 CSPROJ 生成 XML 文档

How to generate XML documentation for CSPROJ with multiple targets

我有一个包含多个目标的库项目,例如在 CSPROJ 文件中它有:

<TargetFrameworks>net40;net46;net461;net462;net47</TargetFrameworks>

如果我想要 XML 这些目标框架和 DebugRelease 配置的所有组合的文档,我必须 select 在 UI 使用构建配置管理器,然后将其设置为为该组合构建 XML 文档,然后每个组合在 CSPROJ 中单独列为 PropertyGroup,并带有 [=27] 的预期输出文件=] 文档。

有没有更好的方法?

发布问题和答案,因为我没有在网上其他任何地方找到这个记录

解决此问题的一种方法是在每个 CSPROJ 文件中包含以下内容:

<!-- Build XML documentation for all combinations of target framework x configuration -->
<PropertyGroup>
 <DocumentationFile>bin$(Configuration)$(TargetFramework)$(AssemblyName).xml 
 </DocumentationFile>
</PropertyGroup>

更好的方法是 link 共享配置文件:

<!-- This must come after any other configuration so that it overwrites it -->
<Import Project="$(MSBuildThisFileDirectory)..\Shared.msbuild" />

... 然后将上述行放在该共享配置文件中,您还可以在其中设置所有其他解决方案范围的 CSPROJ 设置,如 ProductCompanyCopyright , ...

一个简单的方法是将 GenerateDocumentationFile 属性 设置为 true。 VS UI 想要设置路径,如果设置了路径,MSBuild 目标会将此 属性 设置为真,或者如果 GenerateDocumentationFile 属性 为真,则设置默认路径.所以你可以将它添加到你的 csproj 文件中:

<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

如果您想将此设置为 true 以便所有项目共享它,请在您的解决方案目录中创建一个名为 Directory.Build.props 的文件,其中包含以下内容,它将自动导入到目录层次如下:

<Project>
  <PropertyGroup>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
  </PropertyGroup>
</Project>