Веб-часть "Не зарегистрировано как безопасное" после изменения AssemblyVersion - PullRequest
3 голосов
/ 04 ноября 2011

Я (успешно) развернул некоторые sharepoint2010 - веб-части, использующие msbuild.Все отлично работает, пока не решил сменить сборку версии.Всякий раз, когда я делаю это, сообщение

Ошибка веб-части: веб-часть или элемент управления веб-формы на этой странице не могут быть отображены или импортированы.Тип RTContacts, RTContacts, Версия = 1.0.0.0, Культура = нейтральный, PublicKeyToken = 2721ba85ef1e4b88 не может быть найден или не зарегистрирован как безопасный.

Решение будет остаться на 1.0.0.0, но должен быть лучший способ ...

Возможно, интересно упомянуть, что мы используем централизованный файл AssemblyFile, который включен в качестве ссылки.

Манифест содержит правильную версию сборки:

<Assemblies>
<Assembly Location="RTContacts.dll" DeploymentTarget="GlobalAssemblyCache">
  <SafeControls>
    <SafeControl Assembly="RTContacts, Version=1.0.4325.18399, Culture=neutral, PublicKeyToken=2721ba85ef1e4b88" Namespace="RTContacts" TypeName="*" />
  </SafeControls>
</Assembly>

Когда я снова добавляю веб-часть на этот сайт, она отображается правильно, но уже существующие веб-части, похоже, ссылаются на старую версию.

Ответы [ 2 ]

5 голосов
/ 07 ноября 2011

Эти проблемы возникают из-за неправильного использования атрибутов управления версиями.

Если вы посмотрите, например, Microsoft.SharePoint.dll в Reflector, вы увидите v14.0.0.0 (для SharePoint 2010).

Эта AssemblyVersion останется неизменной для Beta, RCx, RTM, всех пакетов обновления, CU и т. Д. - единственное, что изменяется, это AssemblyFileVersion (это то, что вы видите в проводнике Windows в свойствах)

Подробнее см.

Возможности SharePoint: как использовать управление версиями в подстановочном знаке сборки?

Но не поверьте мне на слово - Microsoft KB556041 - Как использовать версию сборки и версию файла сборки

Если вы следуете этому, перенаправления привязки сборки не требуются, и при обновлении веб-части существующие экземпляры не будут повреждены.

2 голосов
/ 04 ноября 2011

Исходный вопрос: Как исправить ошибку «Не зарегистрирован как безопасный» после изменения версии сборки?

Веб-части зарегистрированы как безопасные вweb.config файлов.

Соответствующая запись выглядит следующим образом:

<SafeControl Assembly="MyWebPartLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
  Namespace="MyWebPartLibrary"
  TypeName="*"
  Safe="True"
  AllowRemoteDesigner="True"/>

Измените атрибут Assembly и замените старый номер версии новым.

Текущий вопрос: Как изменить версию сборки без необходимости повторного добавления всех веб-частей на страницу?

Я думаю, вам нужно использовать перенаправление сборки , чтобы сохранить работающие экземпляры веб-частей:

<runtime>
  <assemblyBinding>
    <dependentAssembly>
      <assemblyIdentity name="RTContacts" publicKeyToken="2721ba85ef1e4b88" culture="neutral" />
      <bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.4325.18399" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Прочтите статью Управление версиями веб-частей с перенаправлением сборки для подробного анализа этой проблемы.

...