Visual Studio 2008中无法识别的标记前缀或设备筛选器

时间:2009-09-04 10:14:23

标签: c# visual-studio-2008 asp.net

我有一组Web控件,这些控件位于网站引用的程序集中。我可以毫无问题地构建和运行所有内容,但是当我查看正在使用控件的aspx页面时,我在Tag Prefix下面得到一个绿色下划线。

<%@ Register Assembly="MyProject.UI.ControlLibrary" Namespace="MyProject.UI.ControlLibrary.Web" TagPrefix="ControlLibrary" %>
<asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" Runat="Server">
    <ControlLibrary:ListView ID="List" runat="server"/>
</asp:Content>

所以在这个例子中,我在ControlLibrary下面有一个绿色下划线,当我将鼠标悬停在它上面时,它表示无法识别的标签前缀或设备过滤器'ControlLibrary'

代码是在以前版本的Visual Studio中编写的,我还有另一个包含Web控件的程序集,它似乎工作正常。

关于可能导致问题的任何想法?

5 个答案:

答案 0 :(得分:3)

尝试将引用更改为web.config,如果有任何结果,请查看错误?以下是位置参考的根<asp:标记添加示例。我喜欢这种方法,因为如果您使用图书馆的话,它会保持页面更清晰。移动库引用后查看是否获得相同的结果。

<system.web>
  <pages>
    <controls>
      <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

更新 - 根据您的评论,尝试删除

中的所有内容

Drive:\Documents and Settings\[User]\ApplicationData\Microsoft\VisualStudio\9.0\ReflectedSchemas

或简短版本:

%APPDATA%\Microsoft\VisualStudio\9.0\ReflectedSchemas\

答案 1 :(得分:3)

<%@ Import %>指令置于<%@ Register %>指令之上:

<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>

<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

答案 2 :(得分:1)

很难说原因是什么,但Visual Studio中的ASP.NET XML解析器经常会遇到这样的问题。以下是我找到的一些可能的解决方法,也许其中一些也适用于您:

  • 打开.aspx文件后,稍等一下。 VS需要片刻来解析文件并设置其IntelliSense;
  • 尝试在.aspx文件打开且屏幕上时编译项目。成功构建通常可以解决这些问题。如果这不起作用,请尝试重建项目甚至整个解决方案。再一次 - 等一下。
  • 如果所有其他方法都失败了,请将标记前缀定义放在web.config文件中:

    <configuration><system.web><pages><controls>
        <add tagPrefix="ControlLibrary" namespace="MyProject.UI.ControlLibrary.Web" assembly="MyProject.UI.ControlLibrary"/>
    </controls></pages></system.web></configuration>
    

    当然,尝试重建等等。

答案 3 :(得分:1)

不知道为什么会这样,但确实如此。当我将一个listview控件的命名空间从MyProject.UI.ControlLibrary.Web更改为MyProject.UI.ControlLibrary并重新指定&lt;%register时,它可以正常工作。

答案 4 :(得分:1)

在我的情况下,我发现如果控件程序集已经注册到web.config中的前缀,然后尝试使用@register将其注册到不同的前缀,那么您将收到此错误消息。< / p>