2009-04-13 6 views
35

Khi chỉnh sửa tệp cấu hình .NET (app.config, web.config, v.v.) trong Visual Studio, tôi nhận được IntelliSense của Visual Studio để hướng dẫn tôi khi chọn cài đặt ứng dụng của tôi. Nếu tôi thêm phần cấu hình tùy chỉnh, làm cách nào tôi có thể bật intellisense cho cài đặt tùy chỉnh của mình? Tôi chắc chắn phải có một câu trả lời dễ dàng cho điều này, nhưng một tìm kiếm Google cursory đã không cho tôi bất kỳ sự giúp đỡ nào.Bật Intellisense cho mục tùy chỉnh trong các tệp .config

Cảm ơn!

Trả lời

28

Nếu bạn không muốn thay đổi file Visual Studio của bạn hoặc sao chép bất cứ điều gì vào Visual thư mục Studio, bạn có thể thêm các tập tin .xsd để dự án của bạn, mở file .config của bạn và chọn Schemas trong Thuộc tính cửa sổ (nhấp vào biểu tượng […]):

Screenshot of Visual Studio showing where to find and change the "Schemas" property of your <code>.config</code> file

+5

+1 Giải pháp được chấp nhận dường như được thực hiện rộng rãi, nhưng bạn không nên thực hiện việc này trừ khi thay đổi lược đồ là tiêu chuẩn và hữu ích cho tất cả các dự án Visual Studio có thể được tạo trên máy tính của bạn (http://msdn.microsoft.com/ vi/us/library/ms255821.aspx) – Paul

10

Bạn cần tạo tệp XSD cho cài đặt tùy chỉnh của mình và sao chép tệp đó vào thư mục lược đồ của cài đặt Studio trực quan của bạn. Đối với năm 2005, đây là:% ProgramFiles% \ Microsoft Visual Studio 8 \ XML \ Schemas

Đây là một số thông tin về điều này. http://blogs.msdn.com/astebner/archive/2005/12/07/501466.aspx

+0

Tuyệt vời. Cảm ơn! –

31

Như câu trả lời khác nói, bạn cần phải cung cấp một tài liệu XML Schema cho phần cấu hình tùy chỉnh của bạn. Không cần phải thêm tệp lược đồ .xsd vào một số thư mục chung; bạn có thể tham khảo trực tiếp từ phần tùy chỉnh của bạn trong App.config file:

<configuration> 

    <!-- make the custom section known to .NET's configuration manager --> 
    <configSections> 
    <section name="customSection" type="..." /> 
    </configSections> 

    <!-- your custom section --> 
    <customSection xmlns="http://tempuri.org/customSection.xsd" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="customSection.xsd"> 
    ... 
    </customSection> 

<configuration> 

Thuộc tính xmlns là chỉ có để thiết lập một không gian tên mặc định, do đó bạn không cần phải cài đặt nó trên customSection yếu tố của bạn và tất cả các các yếu tố con của nó. (Tuy nhiên, đừng đặt xmlns thuộc tính trên các yếu tố <configuration>!)

Các customSection.xsd chứa các giản đồ sẽ được sử dụng bởi IntelliSense, ví dụ:

<xs:schema id="customSectionSchema" 
      targetNamespace="http://tempuri.org/customSection.xsd" 
      elementFormDefault="qualified" 
      xmlns="http://tempuri.org/customSection.xsd" 
      xmlns:mstns="http://tempuri.org/customSection.xsd" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="customSection"> 
    ... 
    </xs:element> 
</xs:schema> 
+0

Tôi phải đặt loại gì ở phần.type? Tôi đoán và đặt "xmlns" trong đó và nó hoạt động ... nhưng tôi khá chắc chắn đó là sai. –

+1

@Prisoner, bạn phải đặt một tên kiểu .NET (ít nhất là hội đủ điều kiện). "Namespace.Class, Assembly" ở đó. Framework sẽ khởi tạo loại này và sử dụng nó bất cứ khi nào nó muốn phân tích cú pháp phần cấu hình tùy chỉnh. Chọn bất kỳ một vài lớp xử lý phần được xác định trước hoặc bất kỳ lớp tùy chỉnh nào triển khai giao diện 'IConfigurationSectionHandler'. Để biết thêm thông tin, google cho một thứ giống như trình xử lý phần tùy chỉnh của App.config "' hoặc đọc một bài viết về chủ đề như [bài viết về Dự án Mã này] (http://www.codeproject.com/KB/aspnet/ConfigSections .aspx) để bắt đầu. – stakx

+0

Tôi biết điều này hơi muộn, nhưng điều này dường như gây ra vấn đề thời gian chạy khi Trình quản lý Cấu hình cố gắng đọc phần cấu hình tùy chỉnh và nó không thể nhận ra thuộc tính 'xmlns: xsi'. Bạn có biết tôi có thể làm gì để sửa chữa nó không? Cảm ơn –