Как создать XML-документацию для CSPROJ с несколькими целями

У меня есть проект библиотеки, который имеет несколько целей, например, в файле CSPROJ, который он имеет:

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

Если мне нужна документация по XML для всех комбинаций этих целевых фреймворков и конфигураций Debug и Release я должен выбрать каждый из них, в свою очередь, в пользовательском интерфейсе с помощью диспетчера конфигурации сборки, а затем установить его для создания документации XML для этой комбинации, а затем каждая комбинация отдельно как PropertyGroup в CSPROJ с предполагаемым выходным файлом для документации XML.

Есть ли способ лучше?

Проводка вопроса и ответа, потому что я не нашел это документально нигде в сети

Ответ 1

Самый простой способ - установить для свойства GenerateDocumentationFile значение true. Интерфейс VS хочет установить путь, цели MSBuild установят для этого свойства значение true, если путь задан, или задают путь по умолчанию, если свойство GenerateDocumentationFile имеет значение true. Таким образом, вы можете добавить это в свой файл csproj:

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

Если вы хотите установить значение true для всех своих проектов, чтобы поделиться им, создайте файл с именем Directory.Build.props в каталоге решений со следующим содержимым, и он будет автоматически импортирован в любые проекты. в иерархии каталогов ниже:

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

Ответ 2

Один из способов исправить это - включить в каждый файл 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 ,...