我有一个有多个目标的图书馆项目,例如在CSPROJ文件中它有:
<TargetFrameworks>net40;net46;net461;net462;net47</TargetFrameworks>
如果我想要这些目标框架和Debug
和Release
配置的所有组合的XML文档,我必须使用Build Configuration Manager在UI中依次选择每个文档,然后将其设置为build然后,该组合和每个组合的XML文档将作为PropertyGroup
单独列在CSPROJ中,并带有XML文档的预期输出文件。
有更好的方法吗?
发布问题和答案,因为我没有在其他任何地方找到此文档
答案 0 :(得分:27)
一种简单的方法是将GenerateDocumentationFile
属性设置为true。 VS UI要设置路径,如果路径已设置,MSBuild目标将此属性设置为true,如果GenerateDocumentationFile
属性为true,则设置默认路径。所以你可以将它添加到你的csproj文件中:
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
如果要将所有项目设置为true以进行共享,请在解决方案的目录中创建一个名为Directory.Build.props
的文件,其中包含以下内容,并将自动导入到任何项目中在下面的目录层次结构中:
<Project>
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
</Project>
答案 1 :(得分:4)
解决此问题的一种方法是在每个CSPROJ文件中包含以下内容:
<!-- Build XML documentation for all combinations of target framework x configuration -->
<PropertyGroup>
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml
</DocumentationFile>
</PropertyGroup>
更好的方法是链接到共享配置文件:
<!-- This must come after any other configuration so that it overwrites it -->
<Import Project="$(MSBuildThisFileDirectory)..\Shared.msbuild" />
...然后将上面的行放在该共享配置文件中,您还可以在其中设置所有其他解决方案范围的CSPROJ设置,例如Product
,Company
,Copyright
,. ..