まあ、ある種のネイティブソリューションがあります。.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();