Cara memperbaiki Kesalahan: "Tidak dapat menemukan informasi skema untuk atribut / elemen" dengan membuat skema

148

Saya memiliki aplikasi bentuk windows yang ditulis dalam VS2010 dengan C # dan mendapatkan kesalahan berikut dalam app.configfile:

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'

Apa yang harus saya ubah dalam kode untuk memperbaiki masalah ini? Di mana saya dapat mengedit apa yang ada di CCP_Utility.Settings1dan CCP_Utility.Properties.Settings?

Berikut app.configkodenya:

<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>
Brian McCarthy
sumber
Ini terlihat seperti dupe dari pertanyaan ini: stackoverflow.com/questions/179927/… . Periksa jawabannya dengan @ user57433.
rsbarro
@rsbarro, Di mana alat konfigurasi EntLib dan file DotNetConfig.xsd berada?
Brian McCarthy
Maaf, saya tidak menyadari bahwa pengguna memposting dua jawaban untuk pertanyaan itu. Saya mereferensikan jawaban kedua. Jawaban itu, meskipun benar, sedikit tidak jelas sehingga memberikan jawaban yang lebih rinci di bawah ini.
rsbarro
1
Terima kasih, rsbarro! Pertanyaan asli StingyJack terbatas pada kesalahan menggunakan bagian konfigurasi perpustakaan perusahaan, bukan hanya bagian konfigurasi kustom.
Lisa

Jawaban:

169

UPDATE September 2015
Jawaban ini terus mendapatkan upvotes, jadi saya akan meninggalkannya di sini karena tampaknya akan membantu beberapa orang, tetapi silakan periksa jawaban lain dari @reexmonkey dan @Pressacco terlebih dahulu. Mereka mungkin memberikan hasil yang lebih baik.

JAWABAN ASLI Cobalah
:

  1. Di Visual Studio, buka file app.config atau web.config Anda.
  2. Buka menu "XML" dan pilih "Buat Skema". Tindakan ini harus membuat file baru yang disebut "app.xsd" atau "web.xsd".
  3. Simpan file itu ke disk Anda.
  4. Kembali ke app.config atau web.config Anda dan di jendela edit , klik kanan dan pilih properti. Dari sana, pastikan xsd yang baru saja Anda buat direferensikan di properti Schemas. Jika tidak ada maka tambahkan.

Itu seharusnya menyebabkan pesan-pesan itu menghilang.

Saya menyimpan web.xsd di root folder web saya (yang mungkin bukan tempat terbaik untuk itu, tetapi hanya untuk tujuan demonstrasi) dan properti Schemas saya terlihat seperti ini:

"C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ xml \ Schemas \ DotNetConfig.xsd" "Web.xsd"

rsbarro
sumber
10
@rsbarro, Terima kasih atas tanggapan Anda! Mengapa Anda memiliki 2 file xsd? Saya membuat skema dan menghasilkan hanya 1 file-app.xsd yang saya simpan di direktori root. Kesalahan menghilang tetapi sekarang saya mendapatkan peringatan: "Konfigurasi elemen global telah aleady telah dideklarasikan". ada ide untuk memperbaiki ini?
Brian McCarthy
2
Cukup gunakan dialog Properties untuk memilih skema Anda atau menambahkan skema lain. Saat Anda melihat app.config, klik kanan di jendela editor dan pilih Properties. Anda akan melihat Skema di kontrol Editor Properti yang muncul. Juga, jika Anda mengklik tombol "..." di Schemas, Anda dapat memilih skema yang ingin Anda gunakan untuk file konfigurasi Anda menggunakan GUI yang bagus.
rsbarro
3
Terima kasih. Ini berhasil, tetapi adakah tempat yang bagus yang bisa saya baca untuk mengerti MENGAPA ini terjadi? Sepertinya saya tiba-tiba saja diperlukan untuk menghasilkan skema untuk web.config saya setelah menambahkan banyak konten untuk DotNetOpenAuth dan kemudian menghasilkan kembali file edmx dari awal. Masuk akal dalam "Anda mengubah banyak hal, jadi ada sesuatu yang menjadi tawar-menawar." semacam cara, tetapi akan sangat membantu untuk mengetahui mengapa file web.config secara spontan membutuhkan skema.
froggythefrog
6
Saat Anda membuat file Web.xsd Anda, sertakan hanya skema yang Anda tambahkan di bagian web / app.config Anda (bagian pengguna). Kecualikan semua yang sudah ada dalam skema default atau yang lain .xsd yang disertakan.
Pagotti
10
TIDAK TIDAK TIDAK!! Ini bukan "solusi", karena ini bahkan bukan masalah nyata. Lihat dan pilih jawaban @ pressacco. Jawaban reexmonkey juga berfungsi. Mengapa jawaban ini mendapatkan begitu banyak suara positif? 1. Abaikan saja! Tutup app.config atau web.config dan kompilasi Anda bahkan tidak akan melihat pesan. 2. Meskipun tidak perlu, selesaikan dengan mengklik kanan properti .config yang mengoreksi jalur ke VS yang disediakan XSD. (@ jawaban pressacco) 3. Atau: ubah pengaturan proyek versi DotNet dan kembali. Ulangi dua kali. (jawaban reexmonkey). Dapat menyebabkan masalah dengan pembaruan paket.
pashute
217

Cara tercepat dan termudah untuk menyelesaikan masalah:

  1. Klik kanan pada ikon proyek di Solution Explorer dan pilih "Properties".
  2. Buka tab "Aplikasi" dan pilih kerangka kerja target NET sebelumnya.
  3. Simpan perubahan.
  4. Buka tab "Aplikasi" dan pilih kerangka kerja target NET awal.
  5. Simpan perubahan => masalah terpecahkan!
reexmonkey
sumber
11
Manis! Bekerja untuk saya di VS2012.
amo
4
Bekerja untuk saya juga (VS2013 Premium).
Remco
5
Ini mungkin tidak berfungsi pada percobaan pertama. Saya perlu melakukannya dua kali sebelum bekerja di VS 2013 Express.
H2ONaCl
24
Bekerja untuk saya di Visual Studio 2015. Akan menyenangkan jika seseorang dapat menjelaskan alasannya.
Jonathan Wood
6
Tidak berfungsi, VS2015 memperbarui 2, .NET 4.5.2. Sepertinya membuat pesan pergi, tetapi jika Anda hanya membuka file XML lagi, mereka kembali.
Mengintip
21

XSD disertakan dengan EntLib 5, dan diinstal di direktori skema Visual Studio. Dalam kasus saya, itu dapat ditemukan di:

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

KONTEKS

  • Visual Studio 2010
  • Perpustakaan Perusahaan 5

LANGKAH-LANGKAH UNTUK MENGHAPUS PERINGATAN

  1. buka app.config di proyek Visual Studio Anda
  2. klik kanan di editor Dokumen XML, pilih "Properties"
  3. tambahkan jalur yang sepenuhnya memenuhi syarat ke "EnterpriseLibrary.Configuration.xsd"

KE SAMPING

Perlu diulang bahwa "Daftar Kesalahan" "Pesan" ("Tidak dapat menemukan informasi skema untuk elemen") hanya terlihat ketika Anda membuka file app.config. Jika Anda "Tutup Semua Dokumen" dan kompilasi ... tidak ada pesan yang akan dilaporkan.

Pressacco
sumber
1
Dengan jalur yang sepenuhnya memenuhi syarat yang saya maksud: gunakan jalur absolut. Sebagai contoh C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. Pada sistem operasi Windows, jalur relatif dapat menyertakan. \ Dan .. \ karakter.
Pressacco
1
Terima kasih atas info tentang penutupan file XML untuk menghapus peringatan. ) Strange Behavior (
Machtyn
8
Apakah EnterpriseLibrary.Configuration.xsd hilang di Visual Studio 2015?
Luke
3
Cukup menutup file XML yang membuat masalah ini hilang untuk saya
Taegost
1
Terima kasih @Taegost, ini juga untuk saya. (Masalah saya, kamus analisis kode kustom di bawah VS2013, sedikit berbeda dari yang dinyatakan, tetapi gejala yang sama). Tidak ada lagi yang saya coba bekerja dan ini membuat saya gila. Ketika saya membuka kamus di editor, tampaknya alat analisis kode bahkan tidak menggunakannya karena kesalahan ini!
sn00gan
1

Saya menemukan bahwa ada kesalahan sintaks pada modul terkait dan itu tidak dikompilasi - kompiler tidak memberi tahu saya itu. Hanya memberi saya kesalahan tentang hal-hal app.config. VS2010. Setelah saya memperbaiki kesalahan sintaks, semuanya baik-baik saja.

flobadob
sumber
1

Kesalahan ini terjadi ketika proyek Anda referensi dari skema tanggal. Gunakan Visual Studio untuk menghasilkan yang baru.

Di Visual Studio, lakukan hal berikut:

  1. Buka app.configatau web.configberkas.
  2. Buka XMLmenu dan pilih Create Schema.

Ini akan memicu file ( app#.xsdaplikasi Windows) atau web#.xsd(Situs Web) untuk dibuat.

  1. Simpan file xsd yang baru dibuat ke root proyek.
    • Buka Anda App.configatau web.configberkas, klik kanan pada teks-editor dan pilih properti dan klik ...tombol di sebelah nilai untuk Skema.
    • Tambahkan file xsd yang baru dibuat menggunakan Addtombol.
    • Klik OK

The Tidak dapat menemukan informasi skema untuk atribut / elemen error (s) sekarang harus diselesaikan.

WonderWorker
sumber
1

Sederhana: Dalam desainer Visual Studio Report
1. Buka laporan dalam mode desain dan hapus dataset dari File RDLC
2. Buka solusi Explorer dan hapus file XSD yang sebenarnya (rusak)
3. Tambahkan dataset kembali ke file RDLC.
4. Prosedur di atas akan membuat file XSD baru.
5. Lebih detail ada di bawah ini.

Di Visual Studio, Buka file RDLC Anda Laporan dalam mode Desain. Klik pada laporan dan kemudian Pilih Lihat dan kemudian Laporkan Data dari menu baris atas. Pilih Kumpulan Data dan kemudian Klik Kanan dan hapus dataset dari laporan. Next Open Solution Explorer, jika belum terbuka di Visual Studio Anda. Temukan file XSD (nama itu harus sama dengan dataset yang baru saja Anda hapus dari laporan). Sekarang kembali dan klik kanan lagi pada dataset data laporan, dan pilih Add Dataset. Ini akan membuat file XSD baru dan menulis properti dataset ke laporan. Sekarang pesan kesalahan Anda akan hilang dan semua data yang hilang sekarang akan muncul di laporan Anda.

Greg T.
sumber
0

Ketika ini terjadi pada saya (entah dari mana) saya akan menyelami jawaban teratas di atas, dan kemudian saya pikir saya akan menutup proyek, menutup Visual Studio, dan kemudian membuka kembali semuanya. Masalah terpecahkan. VS bug?

Rockin Raul
sumber
Berlebihan. Menutup editor file App.config dalam VS sudah cukup. VS bug, mungkin.
Jirka Hanika
0

Saya memiliki ini di VS 2012 di mana "Nama bagian" telah diubah dalam sebuah proyek, dan saya memperbaikinya dengan menghapus "app.config" di proyek, kemudian mengklik kanan proyek di "Solution Explorer", memilih " Properti ", lalu" Pengaturan ", lalu buat perubahan ke salah satu pengaturan, simpan, dan bangun kembali. Ini menciptakan app.config baru dengan informasi yang benar.

Davy C
sumber
0

Dalam kasus saya, saya memiliki referensi yang ambigu dalam kode saya. Saya me-restart Visual Studio dan dapat melihat pesan kesalahan. Ketika saya menyelesaikan ini kesalahan lainnya hilang.

Sofia Khwaja
sumber
-1

Sebagian besar yang saya tulis sudah dibahas oleh Pressacco, tetapi ini khusus untuk SpecFlow.

Saya menerima pesan ini untuk <specFlow>elemen dan oleh karena itu saya menambahkan specflow.xsdfile ke solusi jawaban ini (dengan beberapa modifikasi untuk memungkinkan <plugins>elemen).

Setelah itu saya (seperti Pressacco), klik kanan di dalam buffer file app.configdan properti yang dipilih, dan di dalam Schemas, saya menambahkan "specflow.xsd"sampai akhir. Keseluruhannya Schemassekarang berbunyi:

"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"
Tahir Hassan
sumber