Saya bekerja pada sebuah fitur minggu yang akan menambah Penerima acara beberapa contoh daftar khusus. (Aku blogged sedikit tentang bahwa daftar penerima di sini).
Menggunakan baris perintah, Aku bisa menginstal fitur dengan tidak ada kesalahan (Tapi lihat di bawah untuk kesalahan tersembunyi). Ketika saya mencoba untuk menggunakan fitur di situs, MOSS mengeluh "FileNotFoundException" kesalahan. Blog entry ini menjelaskan bagaimana saya memecahkan itu.
Ini adalah kesalahan yang MOSS menunjukkan di peramban web:
Fitur ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ tidak dapat diinstal karena pemuatan acara penerima perakitan "xyzzyFeatureReceiver_0" gagal: System.IO.FileNotFoundException: Tidak dapat memuat file atau perakitan ' xyzzyFeatureReceiver_0’ atau salah satu dari dependensi. Sistem tidak dapat menemukan file yang ditentukan.
Nama file: ' xyzzyFeatureReceiver_0’
di System.Reflection.Assembly.nLoad(Nama file AssemblyName, String basis kode, Bukti assemblySecurity, LocationHint Majelis, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
di System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Bukti assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
di System.Reflection.Assembly.InternalLoad(String assemblyString, Bukti assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
di System.Reflection.Assembly.Load(String assemblyString)
di Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN DIMULAI: Majelis mengikat pendataan diaktifkan OFF.
Mengaktifkan pengelogan kegagalan mengikat Majelis, menetapkan nilai registri [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) untuk 1.
Catatan: Ada beberapa kinerja penalti yang terkait dengan Majelis mengikat kegagalan penebangan.
Untuk mematikan fitur ini, menghapus nilai registry [HKLMSoftwareMicrosoftFusion!EnableLog].
Aku tahu bagaimana untuk sengaja menyebabkan kesalahan itu: Jangan Instal Majelis dalam GAC. Tapi, itu dalam GAC. Saya biasanya menginstal Majelis ke GAC dengan menyeretnya ke c:\windowsassembly folder menggunakan windows explorer. Aku belum pernah merasakan 100% nyaman melakukannya karena saya selalu berpikir bahwa gacutil ada karena suatu alasan … Jadi aku mencoba yang. Tidak ada bedanya.
Aku mencari Internets dan menemukan posting ini: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
Poster yang terjadi menggunakan sedikit akar sama kode (dari buku dalam WSS dari daftar ini) Jadi itu tanda harapan. Namun, saran dari dekorasi perakitan dengan [Majelis: ] direktif tidak masuk akal bagi saya. Aku mencoba tetap dan aku benar. Tidak ada bedanya.
Lalu aku menyadari bahwa definisi kelas saya itu tidak umum. Aku berhasil publik dan yang membuat tidak ada perbedaan.
Berikutnya, Aku pergi ke kesulitan memungkinkan "Majelis mengikat kegagalan log" (mengikuti petunjuk berguna dan akurat disediakan) dan ini adalah tempat hal-hal mulai mendapatkan menarik. Log yang menunjukkan bahwa runtime sedang mencari di mana-mana pada server untuk perakitan saya. Itu bahkan tampaknya akan mencari di lemari obat saya. Tapi … itu tidak akan mencarinya di GAC.
Aku mengenakan jaket musim dingin dan pergi mencari Internets lagi dan menemukan bahwa seseorang memiliki masalah ini juga. Diskusi panjang di yang posting peters off menjadi apa-apa dan I cant menemukan solusi.
Aku pindah perakitan saya ke salah satu tempat log klaim itu sedang mencari dan aku membuat kemajuan yang lebih sedikit. Aku dihargai dengan kesalahan baru di peramban ketika saya mencoba untuk mengaktifkan fitur:
Gagal membuat objek penerima fitur dari Majelis "xyzzyFeatureReceiver_0", jenis "Conchango.xyzzyFeatureReceiver" untuk fitur b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Nilai tidak boleh null.
Nama parameter: jenis
di System.Activator.CreateInstance(Tipe tipe, Non-publik Boolean)
di System.Activator.CreateInstance(Tipe tipe)
di Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Waktu untuk satu perjalanan terakhir ke Internets!
Kali ini saya menemukan, cukup diduga, MOSS bahwa isu kesalahan ini karena Majelis tidak dalam GAC.
Saya ingin mendapatkan sesuatu yang positif dari ini dan mencoba untuk merasa sedikit bangga bahwa saya telah membuat Pelarian dari menjalankan Majelis, Tapi itu tidak bekerja. Aku hanya plain kesal. Aku mendapati diriku bergumam "ayam atau telur" di bawah napas.
Saya akhirnya memutuskan untuk menyepak bola. Saya membuat sebuah proyek yang sama sekali baru dan copy/paste kode dari proyek tidak bekerja incredible-cloaked-from-the-GAC-assembly atas untuk proyek baru ini. (Saya mencari sebuah bendera membangun yang disebut sesuatu seperti "Sembunyikan dari Majelis mengikat jika dipasang di GAC" tapi tidak bisa menemukan satu).
Menginstal fitur dan mengaktifkannya dan … kerjanya! Jadi, setelah semua itu, Aku pada dasarnya ' reboot’ proyek saya. Ini adalah alasan lain mengapa aku benci komputer.
Aku belajar sesuatu yang bermanfaat dari ini. Saya telah menginstal fitur menggunakan baris perintah stsadm sepanjang hari dan telah menggunakan "-memaksa" Opsi keluar dari kebiasaan. Untuk beberapa alasan, Saya tidak menggunakan opsi Angkatan-ketika saya menginstal proyek baru. Saat ini, Aku benar-benar, benar-benar lupa untuk menyalin perakitan proyek baru ini ke dalam GAC. Akibatnya, Saya menerima bahwa "FielNotFoundException" kesalahan. Saat ini, Aku mendapatkannya dari stsadm, tidak ketika saya mencoba untuk mengaktifkan fitur melalui web browser. Jadi, -kekuatan benar-benar memainkan dua peran. Hal ini memungkinkan Anda untuk menginstal ulang sebuah fitur yang ada. Hal ini juga memungkinkan Anda untuk menginstal fitur kereta yang tidak bekerja pada saat runtime dengan menekan kesalahan. Mungkin dikatakan sebagai banyak bantuan di suatu tempat, tetapi aku tidak pernah melihatnya.
</akhir>
Juga, Aku punya saya 2 jam hysteric nintendoSIXTYFOURRRR-di-a-buruk-cara saat ketika saya berganti nama menjadi Namespace pada fitur Receiver, untuk membantu melacak mana Anda atau orang lain dimulai.
Akar dari masalahnya terletak pada wsp dikerahkan dalam sharepoint database. Saya membaca posting Anda dan sementara itu memang memperbaiki masalah kami memiliki solusi besar dengan beberapa proyek dan puluhan file yang begitu bergerak semuanya itu bukan pilihan.
Tidak peduli berapa banyak Anda memperbarui GAC Anda atau perakitan Anda, apa yang memberi Anda kesulitan adalah Majelis di WSP saat ini diinstal pada sharepoint.
Anda dapat dengan mudah melihat bahwa dengan berusaha hanya menarik kembali solusi (mana yang mana kesalahan terjadi). Segala sesuatu yang terjadi pada "pemasaran waktu" harus dipertimbangkan "dikerahkan wsp"-hanya tidak proyek itu sendiri.
Solusi saya adalah:
– Pusat admin: Membatalkan solusi
– stsadm: deletesolution
– Visual Studio => Proyek => Paket
– stsadm: addsolution-file ProjectbinDebugProject.wsp
– stsadm: setelah deploysolution-nama project.wsp-segera - allowgacdeployment-memaksa
– Visual Studio => Menyebarkan
Saya juga dihapus folder bin dan debug dari proyek sebelum menjalankan Deploy lagi, mungkin tidak memiliki efek apapun tapi layak komentar.
Ini bekerja untuk kedua
"Fitur … tidak dapat diinstal karena pemuatan acara penerima perakitan"
dan
"Gagal membuat objek penerima fitur dari Majelis"
Terima kasih!
Francisco
Hanya menghabiskan beberapa jam berusaha untuk memperbaiki masalah yang sama dan menemukan solusi yang lebih baik daripada hanya menciptakan proyek.
Ternyata bahwa untuk beberapa alasan Visual Studio telah menetapkan target membangun untuk x 86 bukan x 64 atau menjalankan – Majelis pada program GAC, tidak hanya GAC sama yang 64 bit SharePoint sedang.