Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini membahas kesalahan pengkompilasi berikut:
- CS0104: Kesalahan: 'referensi' adalah referensi ambigu antara 'identifier' dan 'identifier'.
- CS0116: Kesalahan: Namespace tidak dapat secara langsung berisi anggota seperti bidang, metode, atau pernyataan.
- CS0138: Kesalahan: Direktif menggunakan namespace hanya dapat diterapkan ke namespace; 'type' adalah tipe bukan namespace.
- CS0430: Kesalahan: Alias ekstern 'alias' tidak ditentukan dalam opsi /reference.
-
CS0431: Kesalahan: Tidak dapat menggunakan alias 'pengidentifikasi' karena
::alias mereferensikan jenis. Gunakan.sebagai gantinya. - CS0432: Kesalahan: Alias 'identifier' tidak ditemukan.
- CS0434: Kesalahan: Namespace namespace NamespaceName1 di NamespaceName2 berkonflik dengan type TypeName1 di NamespaceName3.
- CS0438: Kesalahan: Jenis 'type' di 'module_1' berkonflik dengan namespace 'namespace' di 'module_2'.
- CS0439: Kesalahan: Deklarasi alias ekstern harus mendahului semua elemen lain yang ditentukan dalam namespace.
- CS0518: Kesalahan: Jenis 'jenis' yang telah ditentukan sebelumnya tidak ditentukan atau diimpor.
- CS0576: Kesalahan: Namespace 'namespace' berisi definisi yang bertentangan dengan alias 'pengidentifikasi'.
-
CS0687: Kesalahan: Pengaliasan
::namespace selalu merujuk ke jenis atau namespace, oleh karena itu ilegal di sini. Pertimbangkan untuk menggunakan.sebagai gantinya. - CS1022: Kesalahan: Definisi jenis atau namespace, atau akhir file yang diharapkan.
- CS1529: Kesalahan: Klausa penggunaan harus mendahului semua elemen lain yang ditentukan dalam namespace kecuali deklarasi alias ekstern.
- CS1537: Kesalahan: Menggunakan alias 'alias' muncul sebelumnya di namespace ini.
- CS1671: Kesalahan: Deklarasi namespace tidak dapat memiliki pengubah atau atribut.
- CS1679: Kesalahan: Alias ekstern tidak valid untuk '/referensi'; 'pengidentifikasi' bukan pengidentifikasi yang valid.
- CS1680: Kesalahan: Opsi alias referensi tidak valid: 'alias=' -- nama file yang hilang.
- CS1681: Kesalahan: Anda tidak dapat menentukan ulang alias ekstern global.
- CS1730: Kesalahan: Atribut rakitan dan modul harus mendahului semua elemen lain yang ditentukan dalam file kecuali menggunakan klausa dan deklarasi alias ekstern.
- CS2034: Kesalahan: Opsi /referensi yang menyatakan alias ekstern hanya dapat memiliki satu nama file. Untuk menentukan beberapa alias atau nama file, gunakan beberapa opsi /referensi.
- CS7000: Kesalahan: Penggunaan nama alias yang tidak terduga.
-
CS7007: Kesalahan: Arahan
using statichanya dapat diterapkan ke jenis. Pertimbangkan arahanusing namespacesebagai gantinya. - CS7015: Kesalahan: 'alias ekstern' tidak valid dalam konteks ini.
- CS7021: Kesalahan: Tidak dapat mendeklarasikan namespace dalam kode skrip.
- CS8083: Kesalahan: Nama yang memenuhi syarat alias bukan ekspresi.
- CS8085: Kesalahan: Direktif 'menggunakan statis' tidak dapat digunakan untuk mendeklarasikan alias.
- CS8914: Kesalahan: Direktif 'using' global tidak dapat digunakan dalam deklarasi namespace.
- CS8915: Kesalahan: Direktif penggunaan global harus mendahului semua direktif penggunaan non-global.
- CS8954: Kesalahan: File sumber hanya dapat berisi satu deklarasi namespace cakupan file.
- CS8955: Kesalahan: File sumber tidak boleh berisi deklarasi namespace yang berbasis file dan normal.
- CS8956: Kesalahan: Namespace cakupan file harus mendahului semua anggota lain dalam file.
-
CS9130: Kesalahan: Penggunaan alias tidak dapat berupa tipe
ref. -
CS9131: Kesalahan: Hanya alias yang digunakan yang hanya bisa menjadi
unsafe. - CS9132: Kesalahan: Menggunakan alias tidak dapat menjadi jenis referensi nullable.
-
CS9133: Kesalahan: pengubah
staticharus mendahului pengubahunsafe. - CS9162: Jenis tidak valid untuk 'menggunakan statis'. Hanya kelas, struct, antarmuka, enum, delegasi, atau namespace yang dapat digunakan.
Dan peringatan kompilator berikut:
- CS0105: Peringatan: Direktif penggunaan untuk 'namespace' muncul sebelumnya di namespace ini.
- CS0435: Peringatan: Namespace 'namespace' di 'assembly' berkonflik dengan tipe 'type' yang diimpor di 'assembly'. Menggunakan namespace yang didefinisikan dalam 'assembly'.
- CS0436: Peringatan: Jenis 'type' di 'assembly' berkonflik dengan jenis 'type2' yang diimpor di 'assembly'. Menggunakan jenis yang ditentukan dalam 'assembly'.
- CS0437: Peringatan: Jenis 'type' di 'assembly2' berkonflik dengan namespace 'namespace' yang diimpor di 'assembly1'. Menggunakan jenis yang ditentukan dalam 'assembly'.
-
CS0440: Peringatan: Menentukan alias bernama
globaltidak disarankan karenaglobal::selalu mereferensikan namespace global dan bukan alias. - CS8019: Info: Tidak perlu menggunakan direktif.
- CS8020: Info: Alias ekstern yang tidak digunakan.
- CS8933: Info: Direktif penggunaan muncul sebelumnya sebagai penggunaan global.
Kesalahan dan peringatan ini menunjukkan masalah dengan using direktif, deklarasi namespace, atau konflik penamaan antara tipe dan namespace. Bagian berikut menjelaskan kesalahan ini dan cara memperbaikinya.
Menggunakan direktif
Kesalahan berikut berkaitan dengan using instruksi:
- CS0105: Direktif penggunaan untuk 'namespace' muncul sebelumnya di namespace ini.
- CS0430: Alias ekstern 'alias' tidak ditentukan dalam opsi /referensi.
- CS0439: Deklarasi alias ekstern harus mendahului semua elemen lain yang ditentukan dalam namespace layanan.
- CS1529: Klausa penggunaan harus mendahului semua elemen lain yang ditentukan dalam namespace kecuali deklarasi alias ekstern.
- CS1679: Alias ekstern tidak valid untuk '/referensi'; 'pengidentifikasi' bukan pengidentifikasi yang valid.
- CS1680: Opsi alias referensi tidak valid: 'alias=' -- nama file yang hilang.
- CS1681: Anda tidak dapat menentukan ulang alias ekstern global.
- CS1730: Atribut rakitan dan modul harus mendahului semua elemen lain yang ditentukan dalam file kecuali menggunakan klausa dan deklarasi alias ekstern.
- CS2034: Opsi /referensi yang menyatakan alias ekstern hanya dapat memiliki satu nama file. Untuk menentukan beberapa alias atau nama file, gunakan beberapa opsi /referensi.
- CS7015: 'extern alias' tidak valid dalam konteks ini.
- CS8019: Tidak perlu menggunakan direktif.
- CS8020: Alias ekstern yang tidak digunakan.
- CS8933: Direktif penggunaan muncul sebelumnya sebagai penggunaan global.
Lihat referensi bahasa untuk direktif 'using' dan alias ekstern mengenai aturan yang mengatur diagnostik ini. Perbaikan potensial meliputi:
- Pindahkan semua
usingarahan ke bagian atas file, atau ke bagian atas deklarasi namespace. Bahasa C# memerlukanusingdirektif harus muncul sebelum elemen lain dalam namespace (CS1529). - Pindahkan semua deklarasi
extern aliassebelum setiap arahanusing. Bahasa ini memerlukan alias ekstern untuk datang sebelum semua elemen lain, termasukusingdirektif (CS0439, CS7015). - Pindahkan semua atribut tingkat rakitan dan modul setelah
usingklausul danextern aliasdeklarasi tetapi sebelum deklarasi tipe apa pun. Atribut harus mengikuti arahan tetapi mendahului jenis (CS1730). - Pastikan bahwa setiap
extern aliasdeklarasi dalam kode sumber Anda memiliki alias yang sesuai yang ditentukan dalam opsi referensi proyek Anda. Pengkompilasi tidak dapat menyelesaikan alias yang tidak ditentukan (CS0430). - Gunakan opsi terpisah
/referenceuntuk setiap alias ekstern daripada menggabungkan beberapa alias dalam satu opsi. Pengkompilasi memerlukan satu alias per opsi referensi (CS2034). - Pastikan alias dalam opsi Anda
/referenceadalah pengidentifikasi C# yang valid. Alias harus mengikuti aturan penamaan pengidentifikasi (CS1679). Sertakan nama file setelah=dalam opsi referensi alias Anda. Pengkompilasi perlu mengetahui rakitan mana yang dirujuk alias (CS1680). - Jangan mencoba untuk mengubah kembali alias ekstern
global.globaladalah alias yang telah ditentukan sebelumnya yang mengacu pada semua referensi yang tidak memiliki alias (CS1681). - Hapus direktif duplikat
using. Pengkompilasi memperingatkan ketika namespace yang sama diimpor beberapa kali (CS0105, CS8019, CS8933). - Hapus deklarasi yang tidak digunakan
extern alias. Kompilator mengeluarkan diagnostik ketika alias ekstern dinyatakan tetapi tidak pernah direferensikan dalam kode Anda (CS8020).
Menggunakan direktif statis
Kesalahan berikut berkaitan dengan using static instruksi:
- CS0138: Menggunakan direktif namespace hanya dapat diterapkan ke namespace; 'type' adalah tipe bukan namespace.
-
CS7007: Arahan
using statichanya dapat diterapkan ke jenis. Pertimbangkan arahanusing namespacesebagai gantinya. -
CS9133:
staticpengubah harus mendahuluiunsafepengubah. - CS9162: Jenis tidak valid untuk 'menggunakan statis'. Hanya kelas, struct, antarmuka, enum, delegasi, atau namespace yang dapat digunakan.
Lihat referensi bahasa direktif statis untuk aturan yang mengatur diagnostik ini. Perbaikan potensial meliputi:
- Tambahkan pengubah
staticsaat mengimpor anggota jenis secara langsung, karena menghilangkanstaticmemberi tahu pengkompilasi bahwa Anda mengimpor namespace daripada jenis (CS0138). - Hapus pengubah
staticsaat mengimpor namespace, karenausing statichanya dapat diterapkan ke jenis, bukan namespace (CS7007). Pastikan targetusing staticdirektif adalah kelas, struktur, antarmuka, enum, atau delegasi, karena jenis lain bukan target yang valid untuk impor statis (CS9162). - Tempatkan pengubah
staticsebelum pengubahunsafesaat menggabungkan keduanya, karena bahasa memerlukan pengubah dalam urutan tertentu (CS9133).
Direktif penggunaan global
Kesalahan berikut berkaitan dengan global using instruksi:
- CS8914: Direktif using global tidak dapat digunakan dalam pernyataan namespace.
- CS8915: Direktif penggunaan global harus mendahului semua direktif penggunaan non-global.
Lihat petunjuk penggunaan global dalam referensi bahasa pemrograman untuk aturan yang mengatur diagnostik ini. Perbaikan potensial meliputi:
- Pindahkan
global usingdirektif di luar deklarasi namespace mana pun ke cakupan file, karena penggunaan global berlaku untuk seluruh proyek dan tidak dapat dibatasi dalam namespace (CS8914). - Tempatkan semua
global usingarahan sebelum arahan non-globalusingdi dalam file, karena sistem bahasa ini mensyaratkan arahan global harus mendahului arahan lokal (CS8915). - Perhatikan bahwa direktif
static global usingtidak dapat mereferensikan jenis file-lokal .
Namespace cakupan file
Kesalahan berikut berkaitan dengan namespace yang cakupannya file:
- CS8954: File sumber hanya dapat berisi satu deklarasi namespace cakupan file.
- CS8955: File sumber tidak boleh berisi deklarasi cakupan file dan namespace normal.
- CS8956: Namespace dengan cakupan file harus mendahului semua anggota lain dalam file.
Lihat dokumen referensi bahasa ruang lingkup nama file untuk aturan yang mengatur diagnostik ini. Perbaikan potensial meliputi:
- Gunakan hanya satu deklarasi namespace yang terlingkup file per file, karena bahasa hanya mengizinkan namespace yang terlingkup file tunggal untuk mengatur namespace untuk semua jenis dalam file (CS8954).
- Pilih deklarasi namespace bercakupan file atau bercakupan blok dalam satu file, karena bahasa tersebut tidak mengizinkan pencampuran kedua gaya (CS8955).
- Pindahkan deklarasi namespace lingkup file sebelum deklarasi jenis apa pun, karena namespace harus dibuat sebelum jenis dideklarasikan (CS8956).
Kualifikasi alias
Kesalahan berikut berkaitan dengan kualifikasi alias:
-
CS0431: Tidak dapat menggunakan alias 'pengidentifikasi' karena
::alias mereferensikan jenis. Gunakan.sebagai gantinya. - CS0432: Alias 'pengidentifikasi' tidak ditemukan.
-
CS0440: Menentukan alias bernama
globaltidak disarankan karenaglobal::selalu mereferensikan namespace global dan bukan alias. -
CS0687: Kualifikasi
::alias namespace selalu merujuk pada tipe atau namespace, sehingga tidak valid di sini. Pertimbangkan untuk menggunakan.sebagai gantinya. - CS7000: Penggunaan nama alias yang tidak terduga.
- CS8083: Nama yang memenuhi syarat alias bukan ekspresi.
Lihat referensi bahasa kualifikasi alias namespace untuk aturan yang mengatur pengujian ini. Perbaikan potensial meliputi:
- Ganti operator
::dengan operator.ketika Anda mengakses anggota dari alias tipe, karena kualifier::hanya berlaku untuk alias namespace, bukan alias tipe (CS0431, CS0687). - Pastikan alias yang Anda rujuk dideklarasikan dengan
usingdirektif atauextern alias, karena pengkompilasi tidak dapat mengatasi alias yang tidak ditentukan (CS0432). - Gunakan kualifikasi alias hanya dalam konteks di mana nama jenis atau namespace diharapkan, karena nama yang memenuhi syarat alias tidak valid sebagai ekspresi (CS7000, CS8083).
- Pilih nama yang berbeda untuk alias Anda alih-alih
global, karenaglobaldicadangkan untuk merujuk ke ruang nama global dan tidak bisa diubah (CS0440).
Menggunakan pembatasan alias
Kesalahan berikut berkaitan dengan pembatasan penggunaan alias:
- CS0576: Namespace 'namespace' berisi definisi yang bertentangan dengan alias 'pengidentifikasi'.
- CS1537: Menggunakan alias 'alias' muncul sebelumnya di namespace ini.
- CS8085: Direktif 'menggunakan statis' tidak dapat digunakan untuk mendeklarasikan alias.
-
CS9130: Alias tidak boleh digunakan sebagai jenis
ref. -
CS9131: Hanya alias yang menggunakan yang dapat berupa
unsafe. - CS9132: Menggunakan alias tidak boleh berupa jenis referensi yang dapat diubah ke null.
Lihat referensi penggunaan alias untuk aturan yang mengendalikan diagnostik ini. Perbaikan potensial meliputi:
- Pilih nama unik untuk alias Anda yang tidak bertentangan dengan nama jenis atau namespace yang ada dalam cakupan, karena pengkompilasi tidak dapat membedakan antara alias dan definisi yang ada (CS0576).
- Gunakan setiap nama alias hanya sekali dalam namespace layanan, karena deklarasi alias duplikat membuat ambiguitas (CS1537).
- Hapus pengubah
staticsaat mendeklarasikan alias, karena alias dan impor statis tidak dapat digunakan bersamaan - gunakanusing staticuntuk mengimpor anggota atauusing Alias =untuk membuat alias, tetapi bukan kedua-duanya bersama-sama (CS8085).
Dimulai dengan C# 12, pembatasan berikut berlaku untuk menggunakan alias:
- Jangan gunakan
ref,in, atauoutdalam alias 'using', karena pengubah ini tidak valid dalam konteks alias jenis (CS9130). - Gunakan pengubah
unsafehanya dengan alias yang mereferensikan jenis penunjuk atau dengan arahanusing static, karenaunsafetanpa alias atau impor statis tidak diizinkan (CS9131). - Gunakan jenis referensi yang tidak dapat diubah ke null saat membuat alias ke jenis referensi, karena jenis referensi yang dapat diubah ke null tidak dapat dinamai secara langsung (CS9132).
Deklarasi namespace
Kesalahan berikut berkaitan dengan aturan deklarasi namespace:
- CS0116: Namespace tidak dapat secara langsung berisi anggota seperti bidang, metode, atau pernyataan.
- CS1022: Jenis atau definisi namespace, atau akhir file yang diharapkan.
- CS1671: Deklarasi namespace tidak dapat memiliki pengubah atau atribut.
- CS7021: Tidak dapat mendeklarasikan namespace dalam kode skrip.
Lihat kata kunci namespace dan referensi bahasa Struktur Umum Program C# untuk aturan yang mengatur diagnostik-diagnostik ini. Perbaikan potensial meliputi:
- Pastikan semua metode, bidang, dan properti dideklarasikan di dalam jenis (kelas, struct, rekaman, atau antarmuka) daripada langsung di dalam namespace, karena namespace hanya dapat berisi deklarasi jenis, namespace berlapis, dan
usingdirektif (CS0116). - Periksa tanda kurung kurawal yang tidak cocok dalam file sumber Anda, karena kurung kurawal penutup tambahan setelah namespace atau definisi tipe menghasilkan kesalahan ketika pengompilasi menemukan konten yang tidak terduga di akhir file (CS1022).
- Hapus pengubah akses atau atribut apa pun dari deklarasi namespace, karena namespace tidak mendukung pengubah seperti
publicatauprivate, dan atribut tidak dapat diterapkan pada mereka (CS1671). - Pindahkan deklarasi namespace layanan dari file skrip C# (
.csx) dan ke file sumber reguler (.cs), karena kode skrip mengevaluasi dalam konteks eksekusi tunggal yang tidak mendukung deklarasi namespace layanan (CS7021).
Konflik penamaan namespace dan tipe
Kesalahan dan peringatan berikut berkaitan dengan konflik penamaan antara namespace dan jenis:
- CS0104: 'referensi' adalah referensi ambigu antara 'pengidentifikasi' dan 'pengidentifikasi'.
- CS0434: Namespace NamespaceName1 di NamespaceName2 berkonflik dengan jenis TypeName1 di NamespaceName3.
- CS0435: Namespace 'namespace' di 'assembly' berkonflik dengan tipe 'type' yang diimpor di 'assembly'. Menggunakan namespace yang ada di 'assembly'.
- CS0436: Jenis 'type' dalam 'assembly' berkonflik dengan jenis 'type2' yang diimpor di 'assembly'. Menggunakan jenis yang telah didefinisikan dalam 'assembly'.
- CS0437: Jenis 'type' di 'assembly2' berkonflik dengan namespace 'namespace' yang diimpor di 'assembly1'. Menggunakan jenis yang ditentukan dalam 'assembly'.
- CS0438: Jenis 'type' di 'module_1' berkonflik dengan namespace 'namespace' di 'module_2'.
Lihat referensi menggunakan direktif, alias ekstern, dan kualifikasi alias namespace untuk aturan yang mengatur diagnostik ini. Perbaikan potensial meliputi:
- Gunakan nama yang sepenuhnya memenuhi syarat atau alias namespace saat kode Anda mereferensikan nama yang ada di beberapa namespace yang diimpor.
- Pengompilasi tidak dapat menentukan tipe mana yang ingin Anda gunakan ketika nama yang sama muncul di dua atau lebih namespace yang diimpor menggunakan direktif
using(CS0104). - Ganti nama jenis atau namespace ketika jenis yang diimpor dan namespace berlapis yang diimpor memiliki nama yang sepenuhnya memenuhi syarat. Pengkompilasi tidak dapat membedakannya ketika nama dirujuk (CS0434, CS0438).
Untuk mengatasi peringatan konflik penamaan, ganti nama salah satu deklarasi yang bertentangan, gunakan namespace layanan yang berbeda, hapus referensi rakitan yang tidak perlu, atau gunakan alias ekstern untuk memisahkan antara kedua definisi. Pengkompilasi menyelesaikan konflik ini secara otomatis - menggunakan namespace yang ditentukan secara lokal melalui jenis yang diimpor (CS0435), jenis yang ditentukan secara lokal atas jenis yang diimpor (CS0436), atau jenis yang ditentukan secara lokal melalui namespace yang diimpor (CS0437) - tetapi peringatan menunjukkan sumber potensi kebingungan yang harus Anda atasi.
Impor jenis yang telah ditentukan sebelumnya
Kesalahan berikut berkaitan dengan definisi jenis yang hilang dan telah ditentukan sebelumnya:
- CS0518: Tipe 'type' pradefinisi tidak ditentukan atau diimpor.
Nota
Peringatan ini hanya dilaporkan selama operasi Build atau Rebuild eksplisit. Ini tidak muncul ketika sedang mengetik di IDE sebagai bagian dari diagnostik IntelliSense. Ini berarti bahwa jika Anda memperbaiki peringatan dengan menggunakan atau menghapus field tersebut, peringatan mungkin tetap muncul dalam daftar kesalahan sampai Anda membangun ulang proyek.
Lihat referensi bahasa opsi pengkompilasi NoStandardLib untuk aturan yang mengatur diagnostik ini.
Verifikasi bahwa proyek Anda menargetkan runtime .NET yang benar. Jenis yang telah ditentukan sebelumnya seperti System.Int32 dan System.String berasal dari pustaka runtime. Spesifikasi yang salah atau hilang <TargetFramework> mencegah pengkompilasi menemukan jenis ini (CS0518). Pastikan properti <TargetFramework> dalam file .csproj Anda menentukan runtime yang diinginkan (misalnya, net10.0). Jangan tentukan opsi pengompilasi NoStandardLib kecuali Anda berniat menentukan namespace Anda sendiri System. Opsi ini mencegah impor pustaka standar yang menentukan semua jenis yang telah ditentukan sebelumnya (CS0518). Jika kesalahan berlanjut, coba muat ulang proyek di Visual Studio, hapus obj folder dan bin dan bangun ulang proyek, atau instal ulang runtime .NET (CS0518).