खैर, एक प्रकार का मूल समाधान है, मैंने .NET कोर 2.2 के लिए पाया
विचार का उपयोग करना है <include>
टैग ।
आप <GenerateDocumentationFile>true</GenerateDocumentationFile>
अपने जोड़ सकते हैं.csproj
फ़ाइल ।
आपके पास एक इंटरफ़ेस हो सकता है:
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.");
}
}
ठीक है, यह थोड़ा डरावना है, लेकिन यह अपेक्षित तत्वों को जोड़ता है YourNamespace.xml
।
यदि आप Debug
कॉन्फ़िगरेशन बनाते हैं , तो आप टैग की विशेषता के Release
लिए स्वैप कर सकते हैं ।Debug
file
include
एक सही पता लगाने के लिए member
's name
बस खुला उत्पन्न संदर्भित करने के लिए Documentation.xml
फ़ाइल।
मैं यह भी मानता हूं कि इस दृष्टिकोण के लिए कम से कम दो बार (पहली बार प्रारंभिक एक्सएमएल फ़ाइल बनाने के लिए, और दूसरी बार खुद से तत्वों की प्रतिलिपि बनाने के लिए) प्रोजेक्ट या समाधान की आवश्यकता होती है।
उज्ज्वल पक्ष यह है कि विज़ुअल स्टूडियो प्रतिलिपि किए गए तत्वों को मान्य करता है, इसलिए इंटरफ़ेस / बेस क्लास, आदि (उदाहरण के लिए तर्कों के नाम, प्रकार के पैरामीटर आदि) के साथ प्रलेखन और कोड को रखना बहुत आसान है।
मेरी परियोजना में, मैं दोनों के लिए <inheritdoc/>
(DocFX के लिए) और <include/>
(NuGet पैकेज प्रकाशित करने के लिए ) और स्टूडियो स्टूडियो में सत्यापन के लिए समाप्त हो गया है :
/// <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();