まあ、ある種のネイティブソリューションがあります。.NETCore 2.2用に見つけました
アイデアは、<include>タグを使用することです。
追加でき<GenerateDocumentationFile>true</GenerateDocumentationFile>ます.csproj Aファイルを。
あなたはインターフェースを持っているかもしれません:
namespace YourNamespace
{
/// <summary>
/// Represents interface for a type.
/// </summary>
public interface IType
{
/// <summary>
/// Executes an action in read access mode.
/// </summary>
void ExecuteAction();
}
}
そしてそれから継承するもの:
using System;
namespace YourNamespace
{
/// <summary>
/// A type inherited from <see cref="IType"/> interface.
/// </summary>
public class InheritedType : IType
{
/// <include file='bin\Release\netstandard2.0\YourNamespace.xml' path='doc/members/member[@name="M:YourNamespace.IType.ExecuteAction()"]/*'/>
public void ExecuteAction() => Console.WriteLine("Action is executed.");
}
}
OK、少し怖いですが、期待される要素がに追加されますYourNamespace.xml。
あなたが構築する場合Debugの構成を、あなたは入れ替えることができますReleaseのためDebugにfileの属性includeタグ。
正しいを見つけるにはmember「S nameだけ開いて生成された参照するためにDocumentation.xmlファイルを。
また、このアプローチでは、プロジェクトまたはソリューションを少なくとも2回ビルドする必要があると想定しています(最初は最初のXMLファイルを作成し、2回目は要素をファイルからそれ自体にコピーします)。
明るい面は、Visual Studioがコピーされた要素を検証するため、ドキュメントやコードをインターフェイス/基本クラスなど(たとえば、引数の名前、型パラメーターの名前など)と同期させるのがはるかに簡単です。
私のプロジェクトでは、<inheritdoc/>(DocFXの場合)と<include/>(NuGetパッケージの公開およびVisual Studioでの検証の場合)の両方で終了しました。
/// <inheritdoc />
/// <include file='bin\Release\netstandard2.0\Platform.Threading.xml' path='doc/members/member[@name="M:Platform.Threading.Synchronization.ISynchronization.ExecuteReadOperation(System.Action)"]/*'/>
public void ExecuteReadOperation(Action action) => action();