Я працював над функція минулого тижня, яка б додати деякі події приймачі до певного списку екземпляр. (Я blogged трохи про цього списку приймач тут).
За допомогою командного рядка, Я міг встановити функцію з помилки не (Але див. нижче для прихованих помилка). Коли я спробував розгортання функція на сайті, ЛИШАЙНИК скаржилася на "FileNotFoundException" помилка. Цей запис у блозі описує, як я вирішив її.
Це помилка, що МОСС показав мені, у веб-переглядачі:
Функція "b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ не може бути встановлена, тому що завантаження подія ресивер Асамблеї "xyzzyFeatureReceiver_0" не вдалося: System.IO.FileNotFoundException: Не вдалося завантажити файл або складання ' xyzzyFeatureReceiver_0’ або одного з його залежних елементів. Системі не вдалося знайти вказаний файл.
Ім'я файлу: ' xyzzyFeatureReceiver_0’
на System.Reflection.Assembly.nLoad(Ім'я файлу AssemblyName, Рядок в коді, Докази assemblySecurity, Асамблея locationHint, StackCrawlMark& stackMark, Булеві throwOnFileNotFound, Булеві forIntrospection)
на System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Докази assemblySecurity, StackCrawlMark& stackMark, Булеві forIntrospection)
на System.Reflection.Assembly.InternalLoad(Рядок assemblyString, Докази assemblySecurity, StackCrawlMark& stackMark, Булеві forIntrospection)
на System.Reflection.Assembly.Load(Рядок assemblyString)
на Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Асамблея прив'язування журналювання ввімкнуто OFF.
Щоб увімкнути Асамблеї bind Помилка журналювання, значення реєстру [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) Щоб 1.
Примітка: Є деякі виконання страти, пов'язаних з Асамблеї bind Помилка журналювання.
Щоб вимкнути цю функцію, видалити значення реєстру [HKLMSoftwareMicrosoftFusion!EnableLog].
Я знаю, як навмисно заподіяти цю помилку: не інсталювати складання у глобальному кеші Складань. Але, Це було в GAC. Я зазвичай інсталювати складання у глобальному кеші Складань, перетягнувши їх в д:\windowsassembly папку за допомогою провідника windows. Я ніколи не відчував 100% комфортно Роблячи це, тому що я завжди думав, що gacutil існував з причини … так що я спробував, що. Він зробив ніякої різниці.
Я шукав в Інтернеті і знайшов цей пост: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
Афіша довелося використовувати той же корінь трохи коду (з цього списку, книги всередині WSS) так, щоб було надій знак. Однак, пропозиція прикраси на зборі з на [Асамблея: ] Директива не має сенсу для мене. Я пробував все одно, і я був правий. Він зробив ніякої різниці.
Тоді я помітив, що моє визначення класу не була громадських. Я зробив це громадських і які зроблені ніякої різниці.
Наступний, Я пішов до проблеми сприятливе "Асамблея bind провал журналу" (дотримуючись інструкції, корисні та точні умови) і це, де речі почали отримувати цікаву. Що журнал показує мені, що виконання є пошук в усьому світі на цей сервер для мого Асамблеї. Навіть здається, шукати його в мій аптечці. Але … він не буде шукати його в GAC.
Я поклав на мій зимові куртки і йти Інтернет здійснення повторного пошуку і знайти, що хтось повинен був цим проблема занадто. Тривалі дискусії в цьому проводки Пітерс на нічого, і я косяк знаходити рішення.
Я перемістити мій Асамблеї в одне з місць, журнал стверджує, що вона є пошук і я зробити трохи більше прогресу. Я впевнений, винагороджені з новий помилка у браузері під час спроби активувати функцію:
Не вдалося створити функцію ресивер об'єкта зі складання "xyzzyFeatureReceiver_0", Введіть "Conchango.xyzzyFeatureReceiver" для функції b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Значення не може бути невизначеним.
Ім'я параметра: тип
на System.Activator.CreateInstance(Тип типу, Булеві внутрішня)
на System.Activator.CreateInstance(Тип типу)
на Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Час для одного останньої поїздки в Інтернет!
На цей раз я дізнатися, як і очікувалося досить, ЛИШАЙНИК видає цю помилку оскільки складання не GAC.
Я хочу, щоб отримати щось позитивне з цього і спробувати почувати себе трохи пишаємося тим, що я створив на Втікача MSIL вузлів, але він не працює. Я тільки простий роздратований. Я вважаю себе бурмочучи "яйце чи курка" під моїм подихом.
Я, нарешті, вирішити Пунт. Я створення абсолютно нового проекту і копіювати/вставити код від incredible-cloaked-from-the-GAC-assembly проект не працює над цим новим проектом. (Я дивлюся на побудувати прапор, називається щось на кшталт "Приховати зі складання обов'язковий, якщо інстальовано в GAC" але не можу знайти один).
Я встановити функцію і активувати його і … це працює! Так, Після все, що, Я повинен був в основному ' перезавантаження’ мій проект. Це ще одна причина, чому я ненавиджу комп'ютери.
Я дізнався щось корисне від цього. Я мав були особливості установки за допомогою командного рядка stsadm весь день і використовують на "-сила" параметр за звичкою. З різних причин, Я не використовую - сила опцію коли я встановив новий проект. Цього разу, Я зробив насправді, по-справжньому забудьте скопіювати цей новий проект складання у глобальному кеші Складань. У результаті, Я отримав цю "FielNotFoundException" помилка. Цього разу, Я отримав його від stsadm, не тоді, коли я намагався активувати функцію через веб-браузер. Так, -сила насправді грає дві ролі. Це дозволяє повторно інсталювати існуючі функції. Вона також дозволяє встановити баггі особливість, яка не може працювати під час виконання придушенні помилку. Це напевно говорить, що стільки в довідці десь, але я ніколи не помічав.
</кінець>
Також, Я мав мій 2 годин з hysteric nintendoSIXTYFOURRRR в a погано way моментів, коли я перейменував простору імен на одержувача функцій, для надання можливості відстеження де твоє, або кого-то почалося.
Корінь проблеми лежить на розгорнутих ПБВ в базі sharepoint. Я прочитав ваш пост і хоча він дійсно вирішити проблему у нас є величезний рішення з кількох проектів і десятки файли так рухається все, це не варіант.
Незалежно від того, скільки ви оновлюєте ваш GAC або ваш монтаж, те, що дає вам проблеми є Асамблеї в поточний ПБВ, встановлених на sharepoint.
Ви можете легко зауважив, що, намагаючись лише згортання рішення (яка є, де відбувається помилка). Все, що відбувається на "втягування час" слід вважати "розгорнутих ПБВ"-не тільки сам проект.
Моє рішення було:
– Центру адміністрування: Скасувати вирішення
– stsadm: deletesolution
– Visual Studio => Проект => Пакет
– stsadm: addsolution-файл ProjectbinDebugProject.wsp
– stsadm: deploysolution-назва project.wsp-негайного - allowgacdeployment-сила
– Visual Studio => Розгортання
Я також видалено папок Кошик і налагодження від проекту до її розгортання знову, Можливо, немає ніякого ефекту, але варто коментуючи.
Це працює як для
"Функція … не може бути встановлена, тому що завантаження подія ресивер Асамблеї"
і
"Не вдалося створити функцію ресивер об'єкта зі складання"
Дякую!
Франциско
Просто провів кілька годин, намагаючись виправити цю ж проблему і знайти краще рішення, ніж просто відтворюючи проекту.
Виявилося, що з деяких причин, Visual Studio мав намір побудувати цільову x 86 замість x 64 або MSIL – був складання у глобальному кеші Складань, просто не ж GAC що 64 біт SharePoint дивився.