Pertanyaan peringatan aneh tentang ExtensionAttribute


Saya mendapatkan peringatan aneh:

Jenis 'System.Runtime.CompilerServices.ExtensionAttribute' yang telah didefinisikan didefinisikan dalam beberapa rakitan dalam alias global; menggunakan definisi dari 'c: \ Program Files \ Referensi Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll'

Tidak ada nomor baris yang diberikan, jadi sulit untuk mengetahui apa yang sedang terjadi.

Kode kesalahan kompiler CS1685


32
2018-02-13 17:17


asal


Jawaban:


Apakah Anda menggunakan dll seseorang (atau milik Anda) yang telah menerapkan atribut ini (dengan nama yang sama persis) itu sendiri sebagai sarana untuk menggunakan beberapa fitur c # 3.0 pada pra .NET 3.5 runtime? (Trik umum)

Ini kemungkinan penyebabnya. Karena menggunakan yang benar (MS satu di GAC) ini bukan masalah meskipun Anda harus memburu yang lain dan menghapusnya.


21
2018-02-13 17:20



Memperluas jawaban ShuggyCoUk (yang benar)

Sejujurnya tidak masalah versi atribut mana yang digunakan (GAC, bagian ke-3, dll ...). Yang penting adalah kompiler C # / VB dapat menemukan beberapa atribut dengan nama yang benar. Atribut tidak melayani tujuan fungsional dalam kode. Itu ada murni untuk memberitahu Compiler "hey, ini adalah metode perpanjangan".

Anda dapat dengan aman mengabaikan peringatan ini.


11
2018-02-13 17:22



Saya setuju dengan ShuggyCoUk bahwa tindakan terbaik adalah mencoba menghapus dll yang menyinggung. Itu mungkin tidak mungkin.

Cara lain untuk menyelesaikan ambiguitas yang kompilator keluhkan adalah untuk mengubah Alias ​​dari dll yang direferensikan. Dalam proyek Anda, di folder Referensi, jika Anda mengklik dll yang direferensikan Anda akan melihat properti Alias. Secara default, ini adalah "global", yang memungkinkan Anda untuk melakukan hal-hal seperti "global :: SomeNamespace.SomeType". Anda mungkin saja dapat mengubah alias menjadi sesuatu yang lain.

Ini tetap masalah yang saya punya di mana saya perlu referensi Microsoft.Scripting.Core.dll, tetapi berisi beberapa jenis yang bertentangan dengan mscorlib.dll. Saya mengubah properti Alias ​​menjadi "ThirdParty" alih-alih "global", dan itu memperbaiki peringatan.


11
2018-04-28 21:45



Saya memiliki masalah yang sama.

Dalam kasus saya masalahnya adalah perakitan Mono.Cecil.

Migrasi dari referensi lokal ke nuget, ketika saya menambahkan referensi NHibernate, paket secara otomatis menambahkan referensi ini.

Referensi ini dihapus, dan dikompilasi ulang proyek saya.

Hapus itu dan berbahagialah !!

Gambar ini diambil dari ILSpy ( http://i.stack.imgur.com/Qyd5o.png )


1
2018-03-05 06:02



Compiler tidak tahu yang System.Runtime.CompilerServices.ExtensionAttribute

Jadi itu menggunakan defination dari c: \ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll '

A .dll yang Anda gunakan mungkin memiliki extenstion yang sama.


0
2018-02-13 17:22



Saya memicu kesalahan ini dengan menginstal IIS dengan .NET 3.5 bukan 4.5 oleh kecelakaan.

Perbaiki adalah untuk menambah 4,5 kembali di "Tambah Fitur ..." di panel kontrol.


0
2018-06-02 14:13