Как развернуть DLL в качестве SafeControls? (Нет ручных решений, пожалуйста)

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

Вопрос

Я управляю пользователем Project (UI) и использую с ними инструментарий расширения AJAX. А dll a jax extension toolkit упоминается в проекте. Проект успешно компилируется.

Другой проект в рамках того же решения, который является проектом WSPBuilder (Deploy). При создании проекта пользовательского интерфейса все элементы управления будут копировать для развертывания каталога проекта 12\TEMPLATE\CONTROLTEMPLATES и dll проекта пользовательского интерфейса также скопировано в GAC папка. (Для копирования я использую события после сборки)

Затем создайте проект развертывания, используя сборку и развертывание WSPBuilder. Я получаю сообщение об ошибке:

An error occurred during the processing of . Unknown server tag 'asp:ScriptManager'.

Пожалуйста, не говорите, что я вручную изменить Web.Config, чтобы добавить и отметить расширение AJAX как безопасное управление. Я не собираюсь этого делать.

Есть лучшее решение?

PS: Я использую WSPBUILDER, STSDEV и VSEWSS.

РЕДАКТИРОВАТЬ

Спасибо Крису. Проблема была:

В этом случае я думаю, что это другие элементы в web.config, которые вам не хватает - объявления Ajax. Помимо прочего, вам нужно следующее в вашем Web.Config, так что .net знает, как найти класс ScriptManager:

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

Но эта проблема идет немного странно на моей стороне. Мне пришлось установить enableSessionState к true из pages метка под system.web и не понаправлено следующим:

<add name=”Session” type=”System.Web.SessionState.SessionStateModule” />

Я думал, что поместить ajaxextension.dll в GAC может решить эту проблему. Я избегал написать функцию для изменения web.config. Могу ли я сделать это тоже в manifest.xml?

Пожалуйста, предложите!

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

Решение

Ошибка, которую вы видите, не связана с записью SafeControls. Если бы это было так, вы увидите сообщение, в котором говорится: «Невозможно добавить выбранные веб -детали. Веб -деталь или управление веб -формой на этой странице не может быть отображен или импортирован. Тип не зарегистрирован как безопасный».

В этом случае я думаю, что это другие элементы в web.config, которые вам не хватает - объявления Ajax. Среди других вещей, вам нужно следующее в вашем web.config, так что .net знает, как найти класс ScriptManager:

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

У вас есть пара вариантов:

  • Используйте эту функцию в популярном SharePoint Project CodePlex Project который сделает изменение web.config
  • Напишите свой собственный код, чтобы внести изменения.

Полная информация о необходимых изменениях Web.Config подробно здесь, в блоге Майка Аммерлаана.

Какой бы маршрут вы не выбрали, проверьте версию Ajax, которую вы используете, по руководству/образцам, которые вы используете.

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

Комментарий с сайта WSPBuilder.

Хорошо сделано! Добавление сторонних DLL отлично отработало, когда я развернул Ajax и The Ajax Control Toolkit. Я создал функцию для всех изменений Web.Config и использовал эталонную папку GAC , чтобы включить DLL Control DLL. Отлично работал даже с несколькими серверами на ферме. Это был спасатель жизни!

Так что включите DLL в свой проект WSPBuilder, чтобы включить его, а затем создайте функцию для изменения web.config. Видеть эта почта Для получения информации об изменении web.config с функцией.

Сначала вы должны добавить сборку, которую хотите развернуть в проекте VS. Например, вы можете создать папку «LIBS» для хранения всех внешних собраний, которые вам понадобятся на сайте вашей команды.

Затем вы должны отредактировать файл manifest.xml определения сайта вашей команды. Вы можете найти этот файл в папке "PKG" в вашем проекте. Имейте в виду, что папка PKG будет доступна только в том случае, если вы хотя бы развернули решение один раз.

Хорошо, теперь вы должны добавить новый <Assembly> Детский элемент для <Assemblies> Элемент в файле Manifest.xml решения вашей команды определения. С помощью атрибута «DeploymentTarget» вы можете определить, следует ли развернуть сборку в GAC или в папку Bin приложения веб -приложения.

В следующем примере показано, как <Assemblies> Элемент выглядит так, если вы хотите добавить «teamsitedefinition1.dll» в GAC и добавить «testsolution.dll» в папку Bin. Если вам нужна безопасная запись для управления для вашей сборки, вы также можете добавить этот.

<Assemblies>
    <Assembly Location="TeamSiteDefinition1.dll" DeploymentTarget="GlobalAssemblyCache" />
    <Assembly Location="TestSolution.dll" DeploymentTarget="WebApplication">
       <SafeControls>
          <SafeControl ..... />
       </SafeControls>
    </Assembly>
</Assemblies>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top