नुगेट पैकेज में क्लास लाइब्रेरी के लिए Xml डॉक्स कैसे शामिल करें?


104

मैं एक C # क्लास लाइब्रेरी के लिए एक NuGet पैकेज बना रहा हूं, और मैं लाइब्रेरी के साथ उत्पन्न Xml प्रलेखन को शामिल करना चाहूंगा। यह मेरी nuspec फ़ाइल है:

<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata>
    <id>MyLibrary</id>
    <version>1.0.0.0</version>
    <authors>John Nelson</authors>
    <language>en-US</language>
    <description>A C# class library</description>
  </metadata>
  <files>
    <file src="..\..\build\MyLibrary.dll" target="lib\Net40" />
    <file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
  </files>
</package>

जब मैं इस कमांड के साथ पैकेज बनाता हूं :

nuget pack MyLibrary.nuspec

यह एक त्रुटि उत्पन्न करता है। अगर मैं लाइन हटाता हूं:

<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />

NuGet.exe सफलतापूर्वक nupkg बनाता है। मैं पैकेज को अनज़िप भी कर सकता हूं, और सत्यापित कर सकता हूं कि सामग्री सही है। मैं क्या गलत कर रहा हूं? क्या xml फ़ाइल को एक अलग लक्ष्य निर्देशिका में जाना चाहिए?


पैकेज बनाने के लिए आप किस कमांड का उपयोग करते हैं?
कर्नल पैनिक

@ColonelPanic कमांड और डॉक्स से लिंक के साथ अद्यतन प्रश्न।
जॉन नेल्सन

धन्यवाद जॉन। मैं सीधे एक csproj पैकेजिंग कर रहा हूँ nuget pack library.csproj(मेरे पास एक nuspec नहीं है), लेकिन फिक्स एक ही काम करता है।
कर्नल पैनिक

जवाबों:


99

समस्या यह थी कि मैं उस बिल्ड कॉन्फ़िगरेशन के लिए "जेनरेट एक्सएमएल डॉक्यूमेंटेशन" की जांच नहीं कर रहा था जो मैं उपयोग कर रहा था। वह निस्पृह सही है।

यहां छवि विवरण दर्ज करें


6
जानकार अच्छा लगा। मैं पैकेज बनाने के लिए GUI का उपयोग करने के लिए अपना हाथ आज़मा रहा था, और यह मुझे lib के बजाय XML फ़ाइल को सामग्री फ़ोल्डर में ले जाने की कोशिश कर रहा था। सही नहीं लगा, इसलिए मैं दूसरी राय लेना चाहता था। खुशी है कि आपके पास यह पोस्ट थी। :-)
माइक लुईस

12

.NET Core / Standard में आप प्रोजेक्ट XML फ़ाइल को संपादित करके ऐसा कर सकते हैं, उदाहरण के लिए:

<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<PropertyGroup>
    <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
</PropertyGroup>

यह आपके आउटपुट असेंबली के बगल में XML फ़ाइल के रूप में दस्तावेज़ीकरण को आउटपुट करेगा।

संपादित करें: एक बार ध्यान दें कि एक बार जब आप सक्षम GenerateDocumentationFileहो जाते हैं, तो संभवत: पूर्ण दस्तावेज़ टैग नहीं किए जाने के लिए आपके सार्वजनिक तरीकों पर आपको बहुत सारी चेतावनियाँ मिलेंगी। यदि आप इन चेतावनियों को निष्क्रिय करना चाहते हैं तो बस इसमें जोड़ें PropertyGroup:

<NoWarn>$(NoWarn);1591</NoWarn>

<GenerateDocumentationFile>परिणाम <DocumentationFile>पहले से ही है, इसलिए मुझे लगता है कि दोनों में से केवल एक की आवश्यकता है, देखें: docs.microsoft.com/en-us/dotnet/csharp/codedoc
कापे

<DocumentationFile>अपने आप को निर्दिष्ट करना आपको केवल उस फ़ाइल को आउटपुट करने की अनुमति देता है जहां आप कभी भी चाहते हैं। यदि आप इसे निर्दिष्ट नहीं करते हैं, तो मुझे लगता है कि यह मेरे द्वारा प्रदान किए गए पथ में शाब्दिक रूप से है।
bytedev
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.