2011-01-04 32 views
5

Tôi đang sử dụng một .Settings tập tin trong Visual Studio của tôi dự án năm 2008, tự động tạo ra một Settings.Designer.cs tập tin từ PublicSettingsSingleFileGenerator cụ tùy chỉnh.comments Thêm vào Settings.Designer.cs

Điều này làm việc tốt, nhưng tôi cũng muốn bật "Cảnh báo dưới dạng lỗi" trong tùy chọn biên dịch, để buộc mọi người cập nhật nhận xét XML nhưng tôi không biết cách thêm nhận xét vào tất cả các yếu tố trong mã được tạo tự động.

Thuộc tính thực tế có thể có nhận xét được thêm bằng cách chọn các phần tử trong dạng xem thiết kế và thêm "Mô tả" trong cửa sổ thuộc tính. Nhưng dường như không có cách nào để làm điều này cho việc khai báo lớp, hoặc thuộc tính cá thể mặc định.

bước để tạo lại vấn đề này như sau

  1. Tạo một dự án mới
  2. Thêm nộp Settings để dự án
  3. Đặt "Truy cập Modifier" của các tập tin thiết lập để Công
  4. Goto thuộc tính dự án, Xây dựng phần
  5. Đặt "Cảnh báo là lỗi" thành Tất cả
  6. Kiểm tra tài liệu XML đầu ra n tập tin tùy chọn
  7. Xây dựng Giải pháp

và đây là mã được tạo ra trong Settings.Designer.cs PublicSettingsSingleFileGenerator nộp

namespace SettingsTest { 

    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] 
    public sealed partial class Settings1 : global::System.Configuration.ApplicationSettingsBase { 

     private static Settings1 defaultInstance = ((Settings1)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings1()))); 

     public static Settings1 Default { 
      get { 
       return defaultInstance; 
      } 
     } 
    } 
} 

Không chắc chắn nếu thông tin thêm này nên là một phần của phần câu hỏi, vì có một số cách để chỉ vào một câu trả lời

Theo liên kết này, các thuộc tính được áp dụng cho lớp có vẻ sai.

http://blogs.msdn.com/b/codeanalysis/archive/2007/04/27/correct-usage-of-the-compilergeneratedattribute-and-the-generatedcodeattribute.aspx

"CompilerGenerateAttribute -.. Thuộc tính này là dành cho trình biên dịch chỉ sử dụng và chỉ ra rằng một yếu tố mã đặc biệt được biên dịch được tạo ra này không bao giờ nên được sử dụng trong mã nguồn nào"

"GeneratedCodeAttribute - Thuộc tính này được sử dụng bởi các công cụ tùy chỉnh tạo mã. Nó chỉ nên được áp dụng cho mã được tạo lại nhiều lần và không được sử dụng bởi các mẫu mà người dùng dự kiến ​​sẽ sửa đổi Nó cũng không nên được áp dụng ở mức loại nếu kiểu được tạo ra là một phần của lớp, trong trường hợp này, nó chỉ nên được áp dụng cho các thành viên riêng lẻ nằm trong phần được tạo ra của kiểu đó."

Cập nhật

tôi đã nêu ra một báo cáo lỗi cho điều này trên trang web của Microsoft Connect và sẽ cập nhật, và chấp nhận một câu trả lời khi chúng tôi nhận được một số biết thêm thông tin http://connect.microsoft.com/VisualStudio/feedback/details/634692/publicsettingssinglefilegenerator-code-fails-when-treat-warnings-as-errors-is-set-to-all-and-xml-documentation-is-on

+0

Vấn đề bạn đang gặp phải khi xử lý các cảnh báo là lỗi? –

+0

Xin lỗi quên làm rõ, trình biên dịch tạo ra một cảnh báo bất cứ khi nào một lớp công khai/thành viên không có tiêu đề nhận xét XML –

+0

Làm cách nào và tại sao bạn đặt tệp Cài đặt thành công khai? –

Trả lời

0

Cài đặt là một lớp học phần : tạo ra một phần trống thứ hai và nhận xét nó

+0

Cảm ơn, ý tưởng này hoạt động cho việc khai báo lớp, nhưng cũng có một thuộc tính instance (singleton) mặc định. Có cách nào để bình luận này không? –

+0

Tôi đã có một chút nhìn vào điều này. Theo http://blogs.msdn.com/b/codeanalysis/archive/2007/04/27/correct-usage-of-the-compilergeneratedattribute-and-the-generatedcodeattribute.aspx, bạn không cần phải bình luận lớp này ở tất cả như CompilerGeneratedAttribute trên lớp nên ngăn chặn các cảnh báo được nêu ra như là một lỗi. Tôi đã nói dối để nhân đôi vấn đề của bạn trong VS2005 và VS2008 nhưng trong cả hai IDE tôi có thể biên dịch với cảnh báo là lỗi (tất cả), tài liệu xml trên, và không có ý kiến ​​trong các tập tin settings.Desiginer.cs ở tất cả. – Kell

+0

Tôi sẽ cập nhật câu hỏi của mình bằng các bước để tạo lại sự cố, từ liên kết của bạn Tôi nghĩ rằng công cụ này đang tạo mã sai –

1

Đáng tiếc là có những vấn đề mâu thuẫn \ cài đặt tại đây:.

  • Tạo tài liệu XML sẽ cảnh báo tất cả các nhận xét còn thiếu trên các thành viên công cộng.
  • Bạn đã bật "cảnh báo là lỗi" (một điều tốt).
  • Cảnh báo đang được nâng lên liên quan đến một lớp học mà bạn không thể thay đổi tức là cài đặt đã tạo.

Kết quả của việc này là bạn có cảnh báo được chuyển thành lỗi trình biên dịch mà bạn không thể khắc phục. Bạn không thể thêm bình luận một cách đáng tin cậy vào lớp cài đặt theo cách thủ công vì chúng sẽ bị mất vào lần sau khi lớp đó được tạo lại.

Xem xét đặt cài đặt của bạn trong một dự án riêng biệt và tắt tài liệu XML về dự án đó.

+1

Cảm ơn, tôi đã đặt câu hỏi ngay bây giờ. Ngoài ra sử dụng một dự án thêm là một ý tưởng tốt, nhưng tôi đang giữ cho một giải pháp sạch hơn vào lúc này, vì nó có vẻ như một cách khá khó xử để giải quyết một vấn đề khá đơn giản. –

2

Không có cách nào tốt để thực hiện việc này, bạn không thể tiêm cảnh báo #pragma bị vô hiệu hóa trong tệp được tạo tự động. Ngoài ra một vấn đề với các tập tin thiết kế Winforms btw. Project + Properties, tab Build, Suppress warnings = 1591. Nhưng điều đó sẽ vô hiệu hóa chẩn đoán cũng là nơi bạn có thể muốn nó được bật. Khôi phục cảnh báo #pragma không khắc phục được điều đó.