SharePoint 2010:Системная DLL (System.Collections.Generic) отсутствует в GAC – как ее добавить?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/58531

  •  10-12-2019
  •  | 
  •  

Вопрос

У меня есть проект SharePoint (в данном примере он называется MyProject) со страницей приложения, которая ссылается на пространство имен System.Collections.Generic.Когда я пытаюсь развернуть проект, я получаю это сообщение об ошибке.

Cannot add the specified assembly to the global assembly cache: MyProject.dll

Если я удалю ссылку на System.Collections.Generic, все будет работать нормально.

Я посмотрел в GAC на сервере SharePoint, а библиотеки System.Collections.Generic там нет!Я предполагаю, что это причина моей проблемы.Как это исправить?

РЕДАКТИРОВАТЬ:Я только что удалил решение, используя веб-страницу Central Admin.Затем я использовал команды SharePoint Add-SPSolution и Install-SPSolution, чтобы установить его снова.Это сработало.Развертывание прошло успешно.Насколько я могу судить, библиотеки System.Collections.Generic DLL до сих пор нет в GAC.Мне это кажется странным.Я ищу C:\Windows\assembly.Есть ли другое место, где может быть эта DLL?

РЕДАКТИРОВАТЬ 2:Я внес небольшое изменение в код и попытался обновить решение с помощью Update-SPSolution.Ошибка вернулась.Я попытался удалить со страницы центра администрирования, а также добавить и установить, как указано выше.Я все еще получил ошибку.

Чтобы исправить это на этот раз, я сделал это:

  1. Удалено решение с помощью страницы центрального администрирования.
  2. Пересобрал решение БЕЗ ссылки на System.Collections.Generic.
  3. Добавлено и установлено решение с помощью команд Add-SPSolution и Install-SPSolution.
  4. Пересобрал решение СО ссылкой на System.Collections.Generic.
  5. Обновил решение с помощью Update-SPSolution.

Я рад, что у меня есть обходной путь, но это не идеальный процесс.Могу ли я что-нибудь сделать, чтобы решить эту проблему?

РЕДАКТИРОВАТЬ 3:Если я удалю решение до того, как получу ошибку, будет проще заставить его работать.В этом случае вместо запуска Update-SPSolution мне следует просто удалить его с помощью Central Admin, а затем запустить Add-SPSolution и Install-SPSolution.Это работает, но мне все равно хотелось бы знать, что происходит.

РЕДАКТИРОВАТЬ 4:Я нашел возможную причину и решение.Я создавал файл WSP, выполнив эту команду в командной строке разработчика:

msbuild MyProject.csproj /p:IsPackaging=True

Однако если вместо этого я щелкну правой кнопкой мыши по решению в Visual Studio и выберу «Развернуть», у меня, похоже, не возникнет проблем с развертыванием.Я поиграюсь с этим еще немного, но пока это выглядит многообещающе.

В чем разница между этой командой и выбором «Развернуть» в Visual Studio?

Это было полезно?

Решение

Занятия в System.Collections.Generic пространство имен находится в System.dll и mscorlib.dll, поэтому вы не найдете DLL с именем System.Collections.Generic.dll.

Обобщенные шаблоны были представлены в .NET 2.0, поэтому, поскольку для запуска SP 2010 требуется .NET 3.5, пространство имен должно присутствовать в этих DLL.Убедитесь, что вы выбрали правильную платформу в параметрах сборки проекта (щелкните проект правой кнопкой мыши и выберите «Свойства»).

Редактировать:

Чтобы выполнить четвертое изменение, если вы перейдете к свойствам проекта в VS и перейдете на вкладку SharePoint, вы сможете увидеть (и настроить) шаги, которые происходят во время действия развертывания.

Конфигурация по умолчанию:

  • Запустить команду перед развертыванием (если настроено)
  • Перезапустить пул приложений IIS
  • Отозвать решение
  • Добавить решение
  • Активировать функции
  • Запустить команду после развертывания (если настроено)

В соответствии с Советы и хитрости:Проверьте, правильно ли VS 2010 упаковывает WPS [sic] если вы создаете файл проекта с помощью команды msbuild, вам следует использовать команду /t:package переключатель вместо /p:IsPackaging=true выключатель.

А msbuild Строка, которую вы выполняете, перестраивает WSP решения, но вы указываете в качестве цели файл проекта.Это может быть вашей проблемой.

Другие советы

Значит, вы имеете дело с действительно старым старым установкой .NET 1.1 и должны обновлять его по крайней мере до 2,0, чтобы получить доступ к дженеранам. Скачать иУстановите правильную версию, а затем попробуйте снова развертывать.

Вам также может потребоваться изменить свою ссылку на каркасную ссылку в Visual Studio, так как он любит по умолчанию до последней, что он может получить свои руки, независимо от того, что доступно на сервере.Если вы пытаетесь развернуть решение, компилируемый для .NET 3.5 к ферму .NET 2.0 или 1.1, он также будет бросать ошибки, как это.

могут быть другие причины сообщения об ошибке, которое вы получаете: - «Невозможно добавить указанную сборку в глобальный кэш сборки: myProject.dll"

Лично я думаю, что удаление System.collection.Generic Используется Директива была просто красная сельдь.

Обычно эта ошибка происходит, потому что процесс использует сборку и заблокирован.

Что я предлагаю вам сделать, если вы получите проблему снова, сделайте следующее: -

    .
  • iisreset или перерабатывать пулы приложений SharePoint
  • Стоп и запустить SharePoint Timer Service
  • Стоп и начать веб-аналитику

    Последний виновник для блокировки DLL может фактически быть Visual Studio самим, особенно если вы работаете на сервере, и любая отладка продолжается. К сожалению, вам нужно будет выключить Visual Studio для выпуска.

    Надеюсь, что помогает

    <Сильные> Редактировать: * Вопрос 4 Мысли *

    MSBUILD Команда с / ispackabing: True Parameter, который вы используете, просто упаковывают проект в .WSP, однако не развернут решение в ферме SharePoint. Эквивалентная команда в Visual Studio будет иметь пакетное решение (формулировка - это что-то подобное), которая доступна через меню правой кнопкой мыши.

    Действие развертывания будет зависеть от выбранной вами команды, но и эта ссылка с моим предыдущим объяснением, команда также делает рециркуляцию бассейна приложений, который выпустит любые ссылки на сборку как часть развертывания. Так что это может быть способ у вас меньше проблем с использованием метода развертывания визуальной студии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top