Почему сборка моего проекта отсутствует в пакете при отладке?
У меня есть проект SharePoint, который я без проблем отлаживал в течение некоторого времени.
Сегодня я добавил приемник функций в единственную функцию проекта. Я еще ничего не изменил в отношении пустого класса приемника, который Visual Studio добавляет по умолчанию.
Команда "Package" теперь генерирует пакет, который включает DLL-файл моего проекта (как и следовало ожидать - добавление получателя функции ничего не должно изменить).
Однако, когда я отлаживаю, сгенерированный пакет не включает файл DLL моего проекта, и развертывание завершается неудачно со следующей ошибкой:
Произошла ошибка на этапе развертывания "Добавить решение": не удалось загрузить сборку приемника "ABC, версия =1.0.0.0, культура = нейтральная, PublicKeyToken=2377fad544a7c307" для функции "ABC_XYZ Feature" (ID: dca34989-a2f2-413b-b5c4-958e0bbb84ef).: System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'ABC, версия =1.0.0.0, культура = нейтральная, PublicKeyToken=2377fad544a7c307' или одна из ее зависимостей. Система не может найти указанный файл. Имя файла: 'ABC, Версия =1.0.0.0, Культура = нейтральная, PublicKeyToken=2377fad544a7c307' в System.Reflection.Assembly._nLoad(AssemblyName fileName, Строка codeBase, Свидетельство AssemblySecurity, Место сборки Hint, StackCrawlMark& stackMark, BooleanFoundSoundFound, Boolean throwOn для объекта OFO, Boolean throwOn, для Boolean throwOn: в System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence AssemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) в System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assembly AssemblySecurity, StackCrawlMark& stackMar. (String assemblyString) в Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject ()
WRN: регистрация привязки сборки выключена. Чтобы включить ведение журнала ошибок привязки сборки, задайте для параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) значение 1. Примечание. С журналированием ошибок привязки сборки связано некоторое снижение производительности. Чтобы отключить эту функцию, удалите значение реестра [HKLM\Software\Microsoft\Fusion!EnableLog].
Удаление приемника функции позволяет мне снова выполнить отладку без проблем, но проблема возвращается, как только я повторно добавляю приемник функции.
Я попытался очистить и восстановить, а затем отладить, но ошибка не исчезнет, если / пока я не удалю приемник функций.
Почему сборка моего проекта включается в пакет, когда я использую команду "Пакет", а не когда я использую команду "Начать отладку", и что из-за добавления получателя функции вызывает это?
3 ответа
Я не знаю, что послужило причиной этого, но проблема исчезла, когда я вручную очистил каталоги obj и bin. Вот шаги, которые я выполнил для перехода из состояния, указанного в вопросе, к успешной отладке с приемником функций:
- Удалить функцию приемника
- Чистый раствор
- Закрыть Visual Studio
- Удалить папку obj проекта SharePoint в проводнике Windows
- Удалить папку bin проекта SharePoint в проводнике Windows
- Откройте Visual Studio и повторно добавьте приемник функций
- Начать отладку
Принятый ответ на этот вопрос не работал для меня.
Следующее сработало:
... в этом конкретном случае сработала простая замена сборки сильных ключей проекта. Если вам раньше не приходилось менять это, это в свойствах проекта -> Подписание. В разделе "Выберите файл ключа строгого имени" выберите "Новый". Пароль не является обязательным.
Благодаря этому сообщению в блоге: Проблемы с развертыванием Farm Solution
Я пытался перейти в Visual Studio для щелчка правой кнопкой мыши на решение - свойства. Под приложением, информацией о сборке, а затем я поднял версию сборки и файла на "минимум 1" (с 1.0.0.0 до 1.0.0.1). Тогда можно было развернуть (и в основном активировать функцию) решение "в WebApplication"