ไม่มีความคิดเห็น XML สำหรับประเภทหรือสมาชิกที่เปิดเผยต่อสาธารณะ


381

ฉันได้รับคำเตือนนี้: "ไม่มีความคิดเห็น XML สำหรับประเภทหรือสมาชิกที่เปิดเผยต่อสาธารณะ"

วิธีแก้ปัญหานี้


8
ฉันเห็นสิ่งนี้ด้วยใน Visual Studio ใครรู้ว่าซอฟต์แวร์คำเตือนนี้มาจากไหน สไตล์ตำรวจ? ตำรวจ Fx? การวิเคราะห์รหัส? ฉันจะปิดได้อย่างไร
พันเอก Panic

คำตอบ:


668

5 ตัวเลือก:

  • กรอกความคิดเห็นในเอกสารประกอบ (ดี แต่ใช้เวลานาน)
  • ปิดการสร้างความคิดเห็น (ในคุณสมบัติของโครงการ)
  • ปิดใช้งานคำเตือนในคุณสมบัติของโครงการ (ใน 'คุณสมบัติของโครงการ' ไปที่คุณสมบัติของโครงการ -> สร้าง> "ข้อผิดพลาดและคำเตือน" (ส่วน), ระงับคำเตือน (กล่องข้อความ) เพิ่ม 1591 (รายการคั่นด้วยเครื่องหมายจุลภาค) โดยค่าเริ่มต้นจะเปลี่ยนการกำหนดค่าที่ใช้งานอยู่ให้พิจารณาเปลี่ยนการกำหนดค่าเป็นทั้งหมด
  • ใช้#pragma warning disable 1591เพื่อปิดการเตือนสำหรับโค้ดบางบิต (และ#pragma warning restore 1591หลังจากนั้น)
  • ละเว้นคำเตือน (ความคิดที่ไม่ดี - คุณจะพลาดคำเตือน "ของจริง" ใหม่)

5
@ จอนพบวิธีแก้ปัญหา: หากคุณได้รับคำเตือนนี้สำหรับโค้ดที่ถูกแบ่งชั้นด้วยคลาสให้ค้นหา "อีกครึ่งหนึ่ง" ของคลาสบางส่วนที่ไม่ได้สร้างขึ้น หากคุณเพิ่มความคิดเห็น XML ที่นั่นคำเตือนสำหรับรหัสที่สร้างขึ้นจะหายไป ฉันมีคำเตือนนี้สำหรับคลาสแอปในไฟล์ App.gics ที่สร้างจากรหัส XAML ในโครงการ WP7 เพื่อแก้ไขมันฉันต้องเพิ่มความคิดเห็น XML ในไฟล์ App.xaml.cs (ซึ่งไม่ได้สร้างขึ้น)
Marcel W

@MarcelW: อ่างั้นมันก็ไม่ได้มีไว้สำหรับสมาชิกที่สร้างขึ้นเหรอ หรือพวกเขาทั้งหมดภายในอย่างไรก็ตาม นั่นน่าจะเหมาะสมแล้ว ...
Jon Skeet

7
นอกจากนี้หากคุณได้รับคำเตือนนี้จากรหัสอ้างอิงบริการที่สร้างขึ้นโดยอัตโนมัติคุณสามารถคลิกขวาที่อ้างอิงบริการเลือก "กำหนดค่าบริการอ้างอิง ... " จากนั้นเปลี่ยน "ระดับการเข้าถึงสำหรับคลาสที่สร้าง" เป็นภายใน
ลีกริสซัม

9
ในกรณีที่คุณปิดการใช้งานคำเตือนตามที่ @NickJ อธิบายให้แน่ใจว่าคุณกำลังเปลี่ยนคำเตือนสำหรับการกำหนดค่าทั้งหมดและไม่เพียง แต่สำหรับ debug \ release
Avital

5
คุณยังสามารถเพิ่มสิ่งนี้เป็นแอตทริบิวต์ class ได้หากคุณต้องการที่จะระงับรหัสสำหรับคลาสทั้งหมด: [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Usage", "CS1591")]
cr1pto

92

เพิ่มความคิดเห็น XML ให้กับประเภทที่เปิดเผยต่อสาธารณะและสมาชิกแน่นอน :)

///<Summary>
/// Gets the answer
///</Summary>
public int MyMethod()
{
   return 42;
}

คุณต้องการ<summary>ความคิดเห็นประเภทเหล่านี้สำหรับสมาชิกทุกคน - สิ่งเหล่านี้จะแสดงในเมนูป๊อปอัพ Intellisense ด้วย

เหตุผลที่คุณจะได้รับการแจ้งเตือนนี้เป็นเพราะคุณได้ตั้งโครงการของคุณไฟล์ xml เอกสารการส่งออก (ในการตั้งค่าของโครงการ) สิ่งนี้มีประโยชน์สำหรับไลบรารีคลาส (.dll แอสเซมบลี) ซึ่งหมายความว่าผู้ใช้ของคุณ. dll จะได้รับเอกสาร intellisense สำหรับ API ของคุณที่นั่นใน Visual Studio

ฉันขอแนะนำให้คุณรับสำเนาของGhostDoc Visual Studio AddIn ทำให้เอกสารง่ายขึ้นมาก


8
+1 สำหรับการพูดถึง GhostDoc ไม่เคยรู้เรื่องนี้เลยทำให้การจัดทำเอกสารง่ายขึ้น
Vivelin

7
+1 ที่ให้เหตุผลในการเตือน พบการตั้งค่าภายใต้ Build in คุณสมบัติของโครงการ (VS 2008) และปิดในโครงการหนึ่งในสิบที่ตรวจสอบอย่างลึกลับโดยไม่มีเหตุผลดี
Chuck Wilbur

30
-1 สำหรับการแนะนำGhostDoc- AddOn ที่โง่ที่สุดที่ฉันเคยเห็น มันสร้างเอกสาร ทีนี้หยุดสักครู่เพื่อคิดดู คุณต้องการให้รหัสของคุณเป็นที่เข้าใจมากขึ้นดังนั้นคุณจึงใช้เครื่องมือที่สร้างเอกสารขึ้นอยู่กับชื่อเมธอดและประเภทอาร์กิวเมนต์เท่านั้น มันสมเหตุสมผลกับคุณหรือไม่ ผู้ใช้สามารถเห็นชื่อและประเภทของข้อโต้แย้งเพิ่มความคิดเห็นDateTime date- วันที่ไม่ได้ช่วยจริงๆ
gdoron ให้การสนับสนุนโมนิกา

4
@gdoron อาจไม่เกิดขึ้นกับคุณ แต่คุณสามารถแก้ไขเอกสารที่ GhostDoc สร้างขึ้นซึ่งจะช่วยให้คุณประหยัดเวลาได้มากเมื่อเทียบกับการเขียนเอกสารทั้งหมดตั้งแต่ต้น
Joel McBeth

3
GhostDoc ทำมากกว่าแค่เดาว่าควรจะแสดงความคิดเห็นอย่างไร - เกือบตลอดเวลามันค่อนข้างใกล้และคุณเพียงแค่ต้องแก้ไขคำศัพท์สองสามคำแทนที่จะพิมพ์ทุกอย่างออกมาและถ้าคุณทำเอกสารถูกต้อง (และคุณ อาจจะไม่ใช่) มีเทมเพลตสำหรับสิ่งต่าง ๆ ส่วนใหญ่วิธีที่พวกเขาจำเป็นต้องใช้คำพูด (สำหรับคุณสมบัติคอนสตรัคเตอร์ ฯลฯ ) และ GhostDoc วางสิ่งเหล่านั้นไว้ใน - เย็นกว่า: ถ้าคุณอยู่ในชั้นเรียนเด็ก กรอกข้อมูลในเอกสารด้วยว่าจากคลาสฐานเป็นแม่แบบที่จะทำงานด้วยแทนที่จะคัดลอกมันด้วยมือ - มันทำให้ในข้อยกเว้น
ผิดเพี้ยน

41

ไม่แสดงคำเตือนสำหรับความคิดเห็น XML

(ไม่ใช่งานของฉัน แต่ฉันพบว่ามีประโยชน์ดังนั้นฉันจึงรวมบทความ & ลิงก์ไว้)

http://bernhardelbl.wordpress.com/2009/02/23/suppress-warnings-for-xml-comments/

ที่นี่ฉันจะแสดงให้คุณเห็นวิธีที่คุณสามารถระงับคำเตือนสำหรับความคิดเห็น XML หลังจากสร้าง Visual Studio

พื้นหลัง

หากคุณตรวจสอบเครื่องหมาย "ไฟล์เอกสาร XML" ในการตั้งค่าโครงการ Visual Studio ไฟล์ XML ที่มีความคิดเห็น XML ทั้งหมดจะถูกสร้างขึ้น นอกจากนี้คุณจะได้รับคำเตือนมากมายในไฟล์ที่สร้างโดยนักออกแบบเนื่องจากความคิดเห็น XML ที่ขาดหายไปหรือไม่ถูกต้อง ในขณะที่คำเตือนบางครั้งช่วยให้เราปรับปรุงและรักษาเสถียรภาพโค้ดของเราการได้รับการเตือนความคิดเห็น XML หลายร้อยเป็นเพียงความเจ็บปวด คำเตือน

ไม่มีความคิดเห็น XML สำหรับประเภทที่เปิดเผยต่อสาธารณะหรือสมาชิก… ความคิดเห็น XML บน…มีแท็กพารามิเตอร์สำหรับ '…' แต่ไม่มีพารามิเตอร์ตามชื่อพารามิเตอร์ '…' ไม่มีแท็กพารามิเตอร์ที่ตรงกันในข้อคิดเห็น XML สำหรับ '…' (แต่ ทำพารามิเตอร์อื่น ๆ ) วิธีแก้ปัญหา

คุณสามารถระงับทุกคำเตือนใน Visual Studio

  • คลิกขวาที่โครงการ Visual Studio / แท็บ Properties / Build

  • แทรกหมายเลขคำเตือนต่อไปนี้ใน "การระงับการเตือน": 1591,1572,1571,1573,1587,1570


6
ฉันต้องการเพิ่ม 1591 เท่านั้นเพื่อระงับการเตือนความคิดเห็น Xml
Brian Behm

ขอบคุณสำหรับรายการรหัส! ผมได้เริ่มต้นที่จะรวบรวมพวกเขาหนึ่งโดยหนึ่งและวันที่ 3 สร้างมีคำเตือนผมมาคิดว่าฉันต้องการที่จะได้จากที่ไหนสักแห่งเป็น :)
Sarh

มีบางอย่างไม่ถูกต้อง 1591 ยังลบคำเตือน "เลิกใช้แล้ว" แต่ MS ระบุว่าเป็นเรื่องเกี่ยวกับความคิดเห็นเท่านั้นmsdn.microsoft.com/en-us/library/zk18c1w9.aspx
Pawel Cioch

ฉันยังตรวจสอบ MS ทั้งหมด 1572,1571,1573,1587,1570 และฉันจะไม่ตั้งค่ามันเป็นข้อผิดพลาดที่เฉพาะเจาะจงมากขึ้นสมมติว่าคุณได้ตั้ง /// <summary> แล้วคุณทำผิดพลาดใน params คุณ ควรได้รับคำเตือน
Pawel Cioch

26

มีอีกวิธีหนึ่งที่คุณสามารถระงับข้อความเหล่านี้ได้โดยไม่ต้องเปลี่ยนโค้ดหรือบล็อก pragma การใช้ Visual Studio - ไปที่คุณสมบัติโครงการ> สร้าง> ข้อผิดพลาดและคำเตือน> ระงับคำเตือน - ผนวก 1591 เข้ากับรายการรหัสเตือน

ป้อนคำอธิบายรูปภาพที่นี่


นี่คือโดยไกลคำตอบที่ดีที่สุดง่ายที่สุดและเร็วที่สุดที่ฉันเคยเห็นมาแล้วสำหรับปัญหานี้ มันเป็นการทำซ้ำของคำตอบอื่นข้างต้น แต่คำตอบนี้เป็นคำอธิบายที่ให้ภาพที่รวดเร็วกว่า ขอบคุณมาก.
David Covey

คำตอบที่ดีที่สุดที่นี่ ป้องกันฉันจากการกระเจิงรหัสฐานกับ#pragma warning disableทุกที่ซึ่งน่ารำคาญ
RoadRunner - MSFT

23

แทรกความคิดเห็น XML ;-)

/// <summary>
/// Describe your member here.
/// </summary>
public string Something
{
    get;
    set;
}

สิ่งนี้อาจดูเหมือนเป็นเรื่องตลกในตอนแรก แต่มันอาจมีประโยชน์ สำหรับฉันมันเป็นประโยชน์ที่จะคิดเกี่ยวกับวิธีการที่ทำแม้สำหรับวิธีการส่วนตัว (ยกเว้นเรื่องเล็กน้อยจริง ๆ แน่นอน)


5
ฉันมักจะแสดงความคิดเห็นวิธีการ แต่สำหรับคุณสมบัติ (ซึ่งเป็นวิธี tehnically แต่มักจะมีการใช้งานเล็กน้อยและชื่อตัวเองชัดเจน) ฉันชอบที่จะหลีกเลี่ยงความเบื่อหน่ายและซ้ำซ้อนของการเพิ่มความคิดเห็น XML ฟุ่มเฟือย
Peter Gluck

15

นี่เป็นเพราะมีการระบุไฟล์เอกสาร XML ในคุณสมบัติโครงการของคุณและวิธีการ / คลาสของคุณเป็นแบบสาธารณะและไม่มีเอกสารประกอบ
คุณสามารถ:

  1. ปิดการใช้งานเอกสาร XML:

    คลิกขวาที่โครงการ -> คุณสมบัติ -> แท็บ 'สร้าง' -> ยกเลิกการเลือกไฟล์เอกสาร XML

  2. นั่งและเขียนเอกสารด้วยตัวเอง!

ข้อมูลสรุปของเอกสาร XML เป็นดังนี้:

/// <summary>
/// Description of the class/method/variable
/// </summary>
..declaration goes here..

ขอบคุณ. ฉันคิดว่าวิธีนี้เป็นวิธีที่ดีที่สุดในการปิดการใช้งานคำเตือน
Ramil Aliyev

8

ฉันต้องการเพิ่มบางสิ่งบางอย่างให้กับคำตอบที่แสดงไว้ที่นี่:

ตามที่ Isak ชี้ให้เห็นเอกสาร XML นั้นมีประโยชน์สำหรับ Class Library เนื่องจากเป็น Intellisense ให้กับผู้ใช้ทั่วไปภายใน Visual Studio ดังนั้นวิธีแก้ปัญหาที่ง่ายและถูกต้องคือเพียงแค่ปิดเอกสารสำหรับโครงการระดับบนสุดใด ๆ (เช่น UI ฯลฯ ) ซึ่งจะไม่ถูกนำไปใช้นอกโครงการของตัวเอง

นอกจากนี้ฉันต้องการที่จะชี้ให้เห็นว่าคำเตือนเป็นการแสดงออกถึงสมาชิกที่มองเห็นได้อย่างเปิดเผยเท่านั้น ดังนั้นหากคุณตั้งค่าไลบรารีคลาสของคุณให้เปิดเผยเฉพาะสิ่งที่ต้องการคุณสามารถทำได้โดยไม่ต้องมีเอกสารprivateและinternalสมาชิก


8

ฉันรู้ว่านี่เป็นเธรดที่เก่ามาก แต่เป็นคำตอบแรกใน google ดังนั้นฉันคิดว่าฉันจะเพิ่มข้อมูลบิตนี้:

พฤติกรรมนี้จะเกิดขึ้นเมื่อระดับการเตือนถูกตั้งไว้ที่ 4 ภายใต้ "คุณสมบัติโครงการ" -> "Build" . หากคุณไม่ต้องการข้อมูลจำนวนมากคุณสามารถตั้งค่าเป็น 3 และคุณจะกำจัดคำเตือนเหล่านี้ แน่นอนว่าการเปลี่ยนระดับการเตือนมีผลมากกว่าความคิดเห็นดังนั้นโปรดดูเอกสารหากคุณไม่แน่ใจว่าคุณจะพลาดอะไร:
https://msdn.microsoft.com/en-us/library/thxezb7y.aspx


7

ในโซลูชันของคุณเมื่อคุณตรวจสอบตัวเลือกเพื่อสร้างไฟล์เอกสาร XML มันจะเริ่มตรวจสอบสมาชิกสาธารณะของคุณว่ามี XMLDoc หรือไม่หากไม่มีคุณจะได้รับคำเตือนสำหรับแต่ละองค์ประกอบ หากคุณไม่ต้องการปล่อย DLL ของคุณจริงๆและคุณไม่จำเป็นต้องใช้เอกสารประกอบให้ไปที่โซลูชันของคุณสร้างส่วนและปิดใช้งานหากคุณจำเป็นต้องใช้ดังนั้นให้เติมพวกเขาและหากไม่มีความสำคัญ คุณสมบัติและเขตข้อมูลเพียงเกินพวกเขาด้วยคำสั่ง pre-compiler #pragma warning disable 1591 คุณยังสามารถเรียกคืนคำเตือน: #pragma warning restore 1591

การใช้งาน pragma: ใด ๆ ที่อยู่ในรหัสก่อนสถานที่ที่คุณได้รับคำเตือนคอมไพเลอร์สำหรับ ... (สำหรับไฟล์วางไว้ในส่วนหัวและคุณไม่จำเป็นต้องเปิดใช้งานอีกครั้งสำหรับคลาสเดียวล้อมรอบคลาสหรือสำหรับวิธีการล้อมรอบ วิธีการหรือ ... คุณไม่จำเป็นต้องห่อมันคุณสามารถเรียกมันและเรียกคืนมันแบบไม่ตั้งใจ (เริ่มในตอนต้นของไฟล์และสิ้นสุดในเมธอด), เขียนโค้ดนี้:

#pragma warning disable 1591 และในกรณีที่คุณต้องการกู้คืนให้ใช้: #pragma warning restore 1591

นี่คือตัวอย่าง:

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using RealEstate.Entity.Models.Base;

namespace RealEstate.Models.Base
{
    public class CityVM
    {

#pragma warning disable 1591

        [Required]
        public string Id { get; set; }

        [Required]
        public string Name { get; set; }

        public List<LanguageBasedName> LanguageBasedNames { get; set; }

        [Required]
        public string CountryId { get; set; }

#pragma warning restore 1591

        /// <summary>
        /// Some countries do not have neither a State, nor a Province
        /// </summary>
        public string StateOrProvinceId { get; set; }
    }
}

โปรดทราบว่าคำสั่ง pragma เริ่มต้นที่จุดเริ่มต้นของบรรทัด


2
#pragma warning disable 1591
#pragma warning disable 1591
#pragma warning disable 1572
#pragma warning disable 1571
#pragma warning disable 1573
#pragma warning disable 1587
#pragma warning disable 1570

2

การตั้งค่าระดับการเตือนเป็น 2 ไม่แสดงข้อความนี้ ไม่ทราบว่าเป็นคำตอบที่ดีที่สุดหรือไม่เพราะมันยังยับยั้งคำเตือนที่มีประโยชน์


แทนที่จะเลือกใช้สิ่งนี้ฉันเดาว่าการปิดใช้งานเอกสาร xml จะช่วยลดความเสี่ยง
Ajay Aradhya

2

คำตอบของ Jon Skeet ใช้งานได้ดีเมื่อคุณสร้างด้วย VisualStudio อย่างไรก็ตามหากคุณกำลังสร้าง sln ผ่านทางบรรทัดคำสั่ง (ในกรณีของฉันมันคือผ่าน Ant) จากนั้นคุณอาจพบว่า msbuild ละเว้นการร้องขอ sln supression

การเพิ่มสิ่งนี้ลงในบรรทัดคำสั่ง msbuild ช่วยแก้ปัญหาสำหรับฉัน:

/p:NoWarn=1591

1

ไฟล์ > แก้ไข > ดูโครงการ (คลิก)

ด้านล่างของโบว์แบบเลื่อนลง (คลิกที่งานเปิด / ปัจจุบัน > คุณสมบัติ ) เปิดหน้าคุณสมบัติโครงการที่ "สร้าง" ภายใต้ "เอาท์พุท" "ยกเลิก" เอกสาร XMLช่องทำเครื่องหมาย

สร้างใหม่และไม่มีคำเตือน


อย่าลืมตรวจสอบการกำหนดค่าบิลด์ทั้งหมดของคุณด้วย ฉันไม่ได้ตรวจสอบมันสำหรับ Debug แต่ไม่ใช่สำหรับ Release และสับสนมาก
MattM

1
โซลูชันนี้ไม่ใช่วิธีแก้ไขปัญหาในกรณีของเอกสาร WebAPI คุณต้องใช้ตัวเลือกนี้ แต่ไม่ได้รับคำเตือน
Pawel Cioch

1

คุณต้องเพิ่ม /// ความคิดเห็นสำหรับสมาชิกที่จะแสดงคำเตือน

ดูรหัสด้านล่าง

public EventLogger()
{
    LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}

จะแสดงคำเตือนความคิดเห็น XML ที่ขาดหายไปสำหรับประเภทที่เปิดเผยต่อสาธารณะหรือสมาชิก '.EventLogger ()'

ฉันเพิ่มความคิดเห็นสำหรับสมาชิกและคำเตือนหายไป

///<Summary>
/// To write a log <Anycomment as per your code>
///</Summary>
public EventLogger()
{
    LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}

-5

ฉันได้รับข้อความนั้นหลังจากแนบแอททริบิวไปที่เมธอด

[webMethod]
public void DoSomething()
{
}

แต่วิธีที่ถูกต้องคือ:

[webMethod()] // Note the Parentheses 
public void DoSomething()
{
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.