Vâng, có một loại giải pháp gốc, tôi đã tìm thấy cho .NET Core 2.2
Ý tưởng là sử dụng <include>
thẻ.
Bạn có thể thêm <GenerateDocumentationFile>true</GenerateDocumentationFile>
bạn.csproj
một tập tin.
Bạn có thể có một giao diện:
namespace YourNamespace
{
/// <summary>
/// Represents interface for a type.
/// </summary>
public interface IType
{
/// <summary>
/// Executes an action in read access mode.
/// </summary>
void ExecuteAction();
}
}
Và một cái gì đó kế thừa từ nó:
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, nó có một chút đáng sợ, nhưng nó thêm các yếu tố được mong đợi vào YourNamespace.xml
.
Nếu bạn xây dựng Debug
cấu hình, bạn có thể trao đổi Release
cho Debug
trong file
thuộc tính của include
thẻ.
Để tìm một đúng member
là name
để tham khảo được tạo ra chỉ cần mở Documentation.xml
tập tin.
Tôi cũng giả định rằng cách tiếp cận này yêu cầu một dự án hoặc giải pháp phải được xây dựng ít nhất hai lần (lần đầu tiên để tạo tệp XML ban đầu và lần thứ hai để sao chép các phần tử từ nó sang chính nó).
Mặt sáng sủa là Visual Studio xác thực các phần tử được sao chép, vì vậy việc giữ cho tài liệu và mã đồng bộ với giao diện / lớp cơ sở, v.v. sẽ dễ dàng hơn nhiều (ví dụ: tên của đối số, tên của tham số kiểu, v.v.).
Tại dự án của mình, tôi đã kết thúc với cả <inheritdoc/>
(cho DocFX) và <include/>
(Để xuất bản các gói NuGet và để xác thực tại 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();