Cách khắc phục Lỗi: không thể tìm thấy thông tin lược đồ cho thuộc tính / phần tử bằng cách tạo lược đồ


148

Tôi có một ứng dụng biểu mẫu windows được viết bằng VS2010 bằng C # và nhận các lỗi sau trong app.configtệp:

Message 4   Could not find schema information for the attribute 'name'
Message 8   Could not find schema information for the attribute 'name'
Message 12  Could not find schema information for the attribute 'name'
Message 5   Could not find schema information for the attribute 'serializeAs'
Message 15  Could not find schema information for the element 'CCP_Utility.Settings1'
Message 2   Could not find schema information for the element 'CCP_Utility.Properties.Settings'
Message 3   Could not find schema information for the element 'setting'
Message 1   Could not find schema information for the element 'userSettings'
Message 6   Could not find schema information for the element 'value'

Tôi phải thay đổi gì trong mã để khắc phục vấn đề này? Tôi có thể chỉnh sửa những gì trong CCP_Utility.Settings1và ở CCP_Utility.Properties.Settingsđâu?

Đây là app.configmã:

<configuration>
<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="CCP_Utility.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        <section name="CCP_Utility.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>
<userSettings>
  <CCP_Utility.Properties.Settings>
    <setting name="SourceDir" serializeAs="String">
      <value />
    </setting>
    <setting name="TargetDir" serializeAs="String">
      <value />
    </setting>
    <setting name="CorpID" serializeAs="String">
      <value />
    </setting>
  </CCP_Utility.Properties.Settings>
    <CCP_Utility.Settings1>
        <setting name="sourceDir" serializeAs="String">
            <value />
        </setting>
        <setting name="targetDir" serializeAs="String">
            <value />
        </setting>
    </CCP_Utility.Settings1>

   </userSettings>
</configuration>

Điều này trông giống như một bản sao của câu hỏi này: stackoverflow.com/questions/179927/ ,. Kiểm tra câu trả lời của @ user57433.
rsbarro

@rsbarro, công cụ cấu hình EntLib và tệp DotNetConfig.xsd nằm ở đâu?
Brian McCarthy

Xin lỗi, tôi không nhận ra rằng người dùng đã đăng hai câu trả lời cho câu hỏi. Tôi đã tham khảo câu trả lời thứ hai. Câu trả lời đó, trong khi chính xác, có một chút không rõ ràng vì vậy một câu trả lời chi tiết hơn dưới đây.
rsbarro

1
Cảm ơn, rsbarro! Câu hỏi ban đầu của StingyJack bị giới hạn bởi các lỗi sử dụng các phần cấu hình thư viện doanh nghiệp, không chỉ đơn giản là bất kỳ phần cấu hình tùy chỉnh nào.
Lisa

Câu trả lời:


169

CẬP NHẬT Tháng 9 năm 2015
Câu trả lời này tiếp tục nhận được sự ủng hộ, vì vậy tôi sẽ để nó ở đây vì nó có vẻ hữu ích với một số người, nhưng vui lòng kiểm tra các câu trả lời khác từ @reexmonkey@Pressacco trước. Họ có thể cung cấp kết quả tốt hơn.

CÂU TRẢ LỜI GỐC
Hãy thử điều này:

  1. Trong Visual Studio, mở tệp app.config hoặc web.config.
  2. Chuyển đến trình đơn "XML" và chọn "Tạo lược đồ". Hành động này sẽ tạo một tệp mới gọi là "app.xsd" hoặc "web.xsd".
  3. Lưu tập tin đó vào đĩa của bạn.
  4. Quay trở lại app.config hoặc web.config của bạn và trong cửa sổ chỉnh sửa , nhấp chuột phải và chọn thuộc tính. Từ đó, đảm bảo xsd bạn vừa tạo được tham chiếu trong thuộc tính Lược đồ. Nếu nó không ở đó thì thêm nó.

Điều đó sẽ khiến những tin nhắn đó biến mất.

Tôi đã lưu web.xsd của mình vào thư mục gốc của thư mục web (có thể không phải là nơi tốt nhất cho nó, nhưng chỉ với mục đích trình diễn) và thuộc tính Lược đồ của tôi trông như thế này:

"C: \ Tệp chương trình (x86) \ Microsoft Visual Studio 10.0 \ xml \ Schemas \ DotNetConfig.xsd" "Web.xsd"


10
@rsbarro, Cảm ơn phản hồi của bạn! Tại sao bạn có 2 tệp xsd? Tôi đã tạo lược đồ và đưa ra chỉ 1 file- app.xsd mà tôi đã lưu vào thư mục gốc. Các lỗi đã biến mất nhưng bây giờ tôi nhận được một cảnh báo: "Cấu hình toàn cầu 'cấu hình' đã được khai báo". Còn ý tưởng nào để sửa cái này nữa không?
Brian McCarthy

2
Chỉ cần sử dụng hộp thoại Thuộc tính để chọn lược đồ của bạn hoặc thêm lược đồ khác. Khi bạn đang xem app.config, nhấp chuột phải vào cửa sổ soạn thảo và chọn Thuộc tính. Bạn sẽ thấy các Lược đồ trong điều khiển Trình soạn thảo thuộc tính bật lên. Ngoài ra, nếu bạn nhấp vào nút "..." trong Lược đồ, nó cho phép bạn chọn các lược đồ bạn muốn sử dụng cho tệp cấu hình của mình bằng GUI đẹp.
rsbarro

3
Cảm ơn. Điều này đã làm việc, nhưng có một nơi tốt tôi có thể đọc để hiểu TẠI SAO điều này xảy ra? Có vẻ như tôi bất ngờ cần thiết để tạo một lược đồ cho web.config sau khi thêm nhiều nội dung cho DotNetOpenAuth và sau đó tạo lại một tệp edmx từ đầu. Nó có ý nghĩa trong một "Bạn đã thay đổi rất nhiều thứ, vì vậy một cái gì đó đã được thắng." cách nào đó, nhưng sẽ hữu ích khi biết lý do tại sao tệp web.config tự nhiên cần một lược đồ.
froggythefrog

6
Khi bạn tạo tệp Web.xsd, chỉ bao gồm các lược đồ mà bạn thêm vào trong phần web / app.config (phần người dùng). Loại trừ tất cả những cái khác đã có trong lược đồ mặc định hoặc những cái khác .xsd đi kèm.
Pagotti

10
KHÔNG KHÔNG KHÔNG!! Đây không phải là "giải pháp", vì nó thậm chí không phải là vấn đề thực sự. Xem và bỏ phiếu cho câu trả lời của @ Pressacco. Ngoài ra câu trả lời của reexmonkey hoạt động. Tại sao câu trả lời này nhận được nhiều phiếu bầu tích cực? 1. Đơn giản là bỏ qua! Đóng app.config hoặc web.config và biên dịch bạn thậm chí sẽ không nhìn thấy các tin nhắn. 2. Mặc dù không cần, giải quyết bằng cách nhấp chuột phải vào các thuộc tính .config sửa đường dẫn đến XSD do VS cung cấp. (@ Pressacco's answer) 3. Hoặc: thay đổi cài đặt dự án Phiên bản DotNet và quay lại. Lặp lại hai lần. (câu trả lời của reexmonkey). Có thể gây ra vấn đề với cập nhật gói.
pashute

217

Cách nhanh nhất, lười nhất để giải quyết vấn đề:

  1. Nhấp chuột phải vào biểu tượng dự án trong Solution Explorer và chọn "Thuộc tính".
  2. Chuyển đến tab "Ứng dụng" và chọn khung mục tiêu .NET trước đó.
  3. Lưu thay đổi.
  4. Chuyển đến tab "Ứng dụng" và chọn khung mục tiêu .NET ban đầu.
  5. Lưu thay đổi => vấn đề đã được giải quyết!

11
Ngọt! Làm việc cho tôi trong VS2012.
amo

4
Làm việc cho tôi quá (VS2013 Premium).
Remco

5
Điều này có thể không hoạt động trên lần thử đầu tiên. Tôi cần phải làm điều đó hai lần trước khi nó hoạt động trong VS 2013 Express.
H2ONaCl

24
Làm việc cho tôi trong Visual Studio 2015. Sẽ rất tuyệt nếu ai đó có thể giải thích tại sao.
Jonathan Wood

6
Không hoạt động, VS2015 cập nhật 2, .NET 4.5.2. Có vẻ như nó làm cho các tin nhắn biến mất, nhưng sau đó nếu bạn chỉ cần mở lại tệp XML, chúng sẽ quay trở lại.
Rình mò

21

Một XSD được bao gồm với EntLib 5 và được cài đặt trong thư mục lược đồ Visual Studio. Trong trường hợp của tôi, nó có thể được tìm thấy tại:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd

BỐI CẢNH

  • Studio hình ảnh 2010
  • Thư viện doanh nghiệp 5

CÁC BƯỚC ĐỂ XÓA CÁC CẢNH BÁO

  1. mở app.config trong dự án Visual Studio của bạn
  2. nhấp chuột phải vào trình soạn thảo Tài liệu XML, chọn "Thuộc tính"
  3. thêm đường dẫn đủ điều kiện vào "EnterpriseL Library.Configuration.xsd"

QUA MỘT BÊN

Cần nhắc lại rằng "Danh sách lỗi" "Thông báo" ("Không thể tìm thấy thông tin lược đồ cho phần tử") chỉ hiển thị khi bạn mở tệp app.config. Nếu bạn "Đóng tất cả tài liệu" và biên dịch ... sẽ không có tin nhắn nào được báo cáo.


1
Bằng con đường đủ điều kiện tôi có nghĩa là: sử dụng một đường dẫn tuyệt đối. Ví dụ C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. Trên hệ điều hành Windows, một đường dẫn tương đối có thể bao gồm. \ Và .. \ ký tự.
Pressacco

1
Cảm ơn thông tin về việc đóng tệp XML để xóa các cảnh báo. ) Hành vi kỳ lạ (
Machtyn

8
EnterpriseL Library.Configuration.xsd có bị thiếu trong Visual Studio 2015 không?
Lu-ca

3
Chỉ cần đóng tệp XML đã khiến vấn đề biến mất đối với tôi
Taegost

1
Cảm ơn bạn @Taegost, điều này cũng đã làm điều đó cho tôi. (Vấn đề của tôi, từ điển phân tích mã tùy chỉnh theo VS2013, hơi khác so với đã nêu, nhưng cùng một triệu chứng). Không có gì khác tôi đã cố gắng làm việc và điều này đã khiến tôi phát điên. Khi tôi mở từ điển trong trình soạn thảo, có vẻ như công cụ phân tích mã thậm chí không sử dụng nó do những lỗi này!
sn00gan

1

Tôi thấy rằng có một lỗi cú pháp trong mô-đun liên quan và nó không được biên dịch - mặc dù trình biên dịch đã không cho tôi biết điều đó. Chỉ cần cho tôi các lỗi liên quan đến các công cụ app.config. VS2010. Khi tôi đã sửa lỗi cú pháp, tất cả đều tốt.


1

Lỗi này xảy ra khi dự án của bạn tham chiếu ngoài các lược đồ ngày. Sử dụng Visual Studio để tạo cái mới.

Trong Visual Studio, hãy làm như sau:

  1. Mở app.confighoặc web.configtập tin của bạn .
  2. Vào XMLmenu và chọn Create Schema.

Điều này sẽ kích hoạt app#.xsd(ứng dụng Windows) hoặc web#.xsd(Trang web) tệp để tạo.

  1. Lưu (các) tệp xsd mới được tạo vào thư mục gốc của dự án.
    • Mở tệp App.confighoặc web.configtệp của bạn , nhấp chuột phải vào trình soạn thảo văn bản và chọn thuộc tính và nhấp vào ...nút bên cạnh giá trị cho Lược đồ.
    • Thêm (các) tệp xsd mới được tạo bằng Addnút.
    • Nhấp chuột OK

Các không thể tìm thấy thông tin schema cho thuộc tính / yếu tố lỗi (s) bây giờ sẽ được giải quyết.


1

Đơn giản: Trong Trình thiết kế Báo cáo Visual Studio
1. Mở báo cáo trong chế độ thiết kế và xóa tập dữ liệu khỏi Tệp RDLC
2. Mở giải pháp Explorer và xóa tệp XSD thực tế (bị hỏng)
3. Thêm lại tập dữ liệu vào tệp RDLC.
4. Quy trình trên sẽ tạo tệp XSD mới.
5. Chi tiết hơn dưới đây.

Trong Visual Studio, Mở Báo cáo tệp RDLC của bạn ở chế độ Thiết kế. Bấm vào báo cáo và sau đó chọn Xem và sau đó Báo cáo dữ liệu từ menu dòng trên cùng. Chọn Bộ dữ liệu và sau đó Nhấp chuột phải và xóa bộ dữ liệu khỏi báo cáo. Open Solution Explorer tiếp theo, nếu nó chưa được mở trong Visual Studio của bạn. Xác định vị trí tệp XSD (Nó phải cùng tên với tập dữ liệu bạn vừa xóa khỏi báo cáo). Bây giờ hãy quay lại và nhấp chuột phải một lần nữa vào Bộ dữ liệu báo cáo và chọn Thêm bộ dữ liệu. Điều này sẽ tạo một tệp XSD mới và ghi các thuộc tính dữ liệu vào báo cáo. Bây giờ thông báo lỗi của bạn sẽ biến mất và mọi dữ liệu bị thiếu sẽ xuất hiện trong các báo cáo của bạn.


0

Khi điều này xảy ra với tôi (không biết từ đâu) tôi đã đi sâu vào câu trả lời hàng đầu ở trên, và sau đó tôi nghĩ rằng tôi sẽ đóng dự án, đóng Visual Studio, và sau đó mở lại mọi thứ. Vấn đề được giải quyết. Lỗi VS?


Quá mức cần thiết. Đóng trình chỉnh sửa tệp App.config trong VS là đủ. Lỗi VS, có thể.
Jirka Hanika

0

Tôi đã có cái này trong VS 2012 khi "Tên phần" đã được thay đổi trong một dự án và tôi đã sửa nó bằng cách xóa "app.config" trong dự án, sau đó nhấp chuột phải vào dự án trong "Solution Explorer", chọn " Thuộc tính ", sau đó" Cài đặt ", sau đó thực hiện thay đổi đối với một trong các cài đặt, lưu và xây dựng lại. Điều này tạo ra một app.config mới với thông tin chính xác.


0

Trong trường hợp của tôi, tôi đã có một tham chiếu mơ hồ trong mã của mình. Tôi đã khởi động lại Visual Studio và có thể thấy thông báo lỗi. Khi tôi giải quyết điều này, lỗi khác biến mất.


-1

Hầu hết những gì tôi viết đã được Pressacco trình bày, nhưng điều này là dành riêng cho SpecFlow.

Tôi đã nhận được thông báo này cho <specFlow>phần tử và do đó tôi đã thêm một specflow.xsdtệp vào giải pháp câu trả lời này (với một số sửa đổi để cho phép <plugins>phần tử).

Sau đó tôi (như Pressacco), nhấp chuột phải vào bộ đệm tệp app.configvà thuộc tính được chọn, và bên trong Schemas, tôi đã thêm vào "specflow.xsd"cuối. Toàn bộ Schemasbây giờ đọc:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\1033\DotNetConfig.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\EntityFrameworkConfig_6_1_0.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\RazorCustomSchema.xsd" "specflow.xsd"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.