2009-06-12 5 views
0

J'applique une nouvelle version d'un assembly à un projet Web et j'ai constaté que je vais devoir remplacer environ 500 instances de l'étiquette Assembly Assembly à le haut de chaque contrôle Web. J'ai considéré l'enregistrer dans le web.config mais quand j'essaye ceci et enlève la balise de "Registre" des contrôles, je reçois l'erreur de "préfixe de balise non reconnu" aussi bien que perdre l'intellisense pour cette balise. Je n'ai pas GAC'ed les assemblées mais je ne pensais pas que ce serait un problème. Qu'est-ce que j'oublie ici? Merci d'avance pour votre aide.Enregistrer l'assembly dans ASP.NET (VS 2005) et web.config

Répondre

2

Etes-vous sûr de créer correctement le fichier de configuration? Rick Strahl vient d'écrire un article excelent sur cette question:

http://www.west-wind.com/WebLog/posts/753705.aspx

Habituellement, lorsque vous incorporez un contrôle personnalisé dans une page, vous devez ajouter une balise @Register comme ceci:

<%@ 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" %> 

dans afin d'obtenir un contrôle pour travailler dans la page et apparaître avec Intellisense. Si vous utilisez le concepteur visuel pour supprimer des contrôles, vous ne remarquerez probablement pas cette condition car le concepteur ajoute automatiquement la dépendance d'assembly et d'espace de noms pour vous dans la page. Cependant, si vous travaillez dans le balisage uniquement comme je le fais le plus souvent, il est souvent ennuyeux de devoir d'abord enregistrer le contrôle en haut de la page et de revenir à l'incorporation du contrôle dans la page pour obtenir Intellisense.

Un moyen plus facile et l'application de manière globale de le faire est de déclarer vos espaces de noms et les balises de contrôle directement dans web.config et de les appliquer à l'échelle mondiale:

<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> 

La section des contrôles est ce qui fournit efficacement l'équivalence des @Enregistrez la balise dans les pages et une fois que vous avez défini le préfixe du tag, la balise @Register n'est plus nécessaire dans la page.

Hope qui aide,

Jim

+0

Merci pour la réponse. J'ai en fait eu le code pour placer les étiquettes dans le web.config du site de Ricks. Ce qu'il a omis de mentionner, c'est qu'intellisense ne fonctionnera pas à moins que VS 2005 SP1 ne soit installé. Je l'ai fait et redémarré VS et ça marche maintenant! –

0

je devais installer VS 2005 Service Pack 1 et redémarrez Visual Studio.

Questions connexes