J'ai un projet de bibliothèque qui a plusieurs cibles, par exemple dans le fichier CSPROJ, il a:
<TargetFrameworks>net40;net46;net461;net462;net47</TargetFrameworks>
Si je veux de la documentation XML pour toutes les combinaisons de ces frameworks cibles et configurations Debug
et Release
, je dois sélectionner chacune à son tour dans l'interface utilisateur à l'aide du Build Configuration Manager, puis la configurer pour construire XML la documentation de cette combinaison et chaque combinaison est ensuite répertoriée séparément sous la forme d'un PropertyGroup
dans le CSPROJ avec le fichier de sortie prévu pour la documentation XML.
Y a-t-il une meilleure façon?
Publier une question et une réponse car je n'ai trouvé cela documenté nulle part ailleurs en ligne
Un moyen simple consiste à définir la propriété GenerateDocumentationFile
sur true. L'interface utilisateur VS veut définir le chemin d'accès, les cibles MSBuild définiront cette propriété sur true si le chemin d'accès est défini ou définir un chemin par défaut si la propriété GenerateDocumentationFile
est vraie. Vous pouvez donc l'ajouter à votre fichier csproj:
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
Si vous souhaitez définir la valeur true pour tous vos projets à partager, créez un fichier nommé Directory.Build.props
dans le répertoire de votre solution avec le contenu suivant et il sera automatiquement importé dans tous les projets de la hiérarchie de répertoires ci-dessous:
<Project>
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
</Project>
Une façon de résoudre ce problème consiste à inclure les éléments suivants dans chaque fichier CSPROJ:
<!-- Build XML documentation for all combinations of target framework x configuration -->
<PropertyGroup>
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml
</DocumentationFile>
</PropertyGroup>
Une façon encore meilleure est de créer un lien vers un fichier de configuration partagé:
<!-- This must come after any other configuration so that it overwrites it -->
<Import Project="$(MSBuildThisFileDirectory)..\Shared.msbuild" />
... puis placez les lignes ci-dessus dans ce fichier de configuration partagé où vous pouvez également définir tous les autres paramètres CSPROJ à l'échelle de la solution tels que Product
, Company
, Copyright
,. ..