Зарегистрируйте сборку в ASP.NET (VS 2005) и web.config - PullRequest
0 голосов
/ 12 июня 2009

Я применяю новую версию сборки к веб-проекту и обнаружил, что мне придется заменить около 500 экземпляров тега Register Assembly в верхней части каждого веб-элемента управления. Я подумал о том, чтобы зарегистрировать его в файле web.config, но когда я попытался это сделать и удалить тег «Register» из элементов управления, я получил ошибку «unrecognized tag prefix» и потерял intellisense для этого тега. Я не собирал GAC сборок, но я не думал, что это станет проблемой. Что мне здесь не хватает? Заранее спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 12 июня 2009

Вы уверены, что правильно строите файл конфигурации? Рик Страл только что написал отличную статью по этому вопросу:

http://www.west -wind.com / WebLog / сообщений / 753705.aspx

Обычно, когда вы вставляете пользовательский элемент управления на страницу, вам нужно добавить тег @Register, например, так:

<%@ Page language="c#" Inherits="Westwind.WebToolkit.MessageDisplay" 
                   CodeBehind="MessageDisplay.aspx.cs"  
                   enableViewState="false"   AutoEventWireup="True" 
                   MasterPageFile="~/WestWindWebToolkit.master"
%>
<%@ Register Assembly="Westwind.Web" Namespace="Westwind.Web.Controls" TagPrefix="ww" %>  

, чтобы заставить элемент управления работать на странице и отображаться в Intellisense. Если вы используете визуальный конструктор для удаления элементов управления, вы, вероятно, не заметите этого требования, потому что дизайнер автоматически добавляет сборку и зависимость пространства имен для вас на страницу. Однако, если вы работаете в разметке только так, как я в основном, часто раздражает необходимость сначала зарегистрировать элемент управления в верхней части страницы, а затем вернуться к фактическому внедрению элемента управления на страницу, чтобы получить Intellisense.

Более простой и глобальный способ сделать это - объявить свои пространства имен и управляющие теги непосредственно в web.config и применить их глобально:

<system.web>    <pages>
  <namespaces>
    <add namespace="System.IO" />
    <add namespace="System.Text" />
    <add namespace="Westwind.Utilities" />
    <add namespace="Westwind.Web.Controls" />
  </namespaces>
  <controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add tagPrefix="ww" namespace="Westwind.Web.Controls" assembly="Westwind.Web" />
  </controls>
</pages>    <compilation debug="true">
  <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>
</system.web>

Раздел «Элементы управления» - это то, что эффективно обеспечивает эквивалентность тега @Register на страницах, и как только вы определили префикс тега, тег @Register больше не требуется на странице.

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

Jim

0 голосов
/ 12 июня 2009

Мне пришлось установить VS 2005 с пакетом обновления 1 и перезапустить Visual Studio.

...