2012-04-26 72 views
11

我有一个服务器控件作为我的MySite程序集中的一个类(即,我的站点的项目不仅包含aspx文件,还包含那些aspx文件引用的服务器控件)。我使用下面的代码一个aspx文件中:命名空间中的歧义引用

<%@ Register Assembly="MySite" Namespace="MySite.misc" TagPrefix="TAC" %> 
... 
<TAC:CustomACM ID="myID" runat="server" /> 

类的代码如下:

namespace MySite.misc 
{ 
    public class CustomACM : AutoCompleteExtender, INamingContainer 
    { 
     //... 
    } 
} 

该网站的作品和完美的编译,但智能感知休息身份识别码的儿童中。将类和注册指令中的名称空间更改为MySiteSC.misc可修复此问题,但使用MySite.miscSC不起作用。 MySiteSCmiscSC在我的解决方案的其他地方都没有使用,任何名称空间中都不存在其他CustomACM类。

ReSharper用工具提示强调“MySite”(即注册指令内的命名空间的一部分),“注册指令未使用且可以安全移除\ n歧义引用”。禁用ReSharper可防止出现此错误,但不能解决问题。

我可以在不更改CustomACM控件的名称空间(并且不将CustomACM控件移动到其他程序集)的情况下修复此问题吗?

+0

这是Web应用程序,而不是一个网站是否正确?(您没有将您的cs文件存储在App_Code中) – Peter 2012-07-13 19:24:23

+0

这是一个Web应用程序,我没有使用App_Code。 – Brian 2012-07-13 20:55:25

回答

0

检查你的web.config文件

<assemblies> 
... 
</assemblies> 

部分,看看也许你不得不MySite.misc

+0

不,在我的web.config程序集中有0个对MySite的引用。当我添加一个,它确实正确解决,但不防止错误。 – Brian 2012-07-18 20:43:59

+0

您是否在属性浏览器中检查了重复列表的引用? – TheMoot 2012-07-20 17:00:15

+0

没有重复的列表。 – Brian 2012-07-20 18:47:29

1

重复引用为了让您的控制,可以在页面声明中使用,则必须映射标记前缀到您的控件的名称空间。

在您的自定义服务器控制项目中,您是否在文件AssemblyInfo.cs中添加了TagPrefixAttribute属性?

您必须在文件末尾添加此行以在名称空间和前缀之间创建映射。

[assembly: TagPrefix("MySite.misc", "TAC")] 

在文件的开头添加这行:

Using System.Web.UI; 

之后你做到这一点,只要你从工具箱拖动到.aspx页面中的自定义服务器控件,VS会自动添加注册指令。

或者,如果您的自定义控件将用于Web应用程序中的多个页面,则可以不使用register指令而指定web.config文件中的标记前缀/名称空间映射。

<?xml version="1.0"?> 
<configuration> 
    <system.web>  
    <pages> 
    <controls> 
     <add tagPrefix="TAC" Assembly="MySite" 
     namespace="MySite.misc"> 
     </add> 
    </controls> 
    </pages> 
    </system.web> 
</configuration> 
+0

完成此操作后,我可以使用工具箱将CustomACM控件拖到页面上。这样做会自动在页面顶部添加一条注册指令,但新添加的注册指令仍然受到模糊引用问题的困扰。 – Brian 2012-07-20 13:42:02

+1

你解决了这个问题吗?我遇到了同样的问题 – ydd1987 2013-03-28 18:55:11

+0

@ ydd1987:不,我仍然在使用我在原始问题中提到的解决方法(即对受影响的控件使用不同的名称空间)。 – Brian 2013-09-18 12:54:37

5

Resharper在这里是马车恕我直言。通过清除ReSharper(ReSharper> Options> General> Clear Caches)的缓存,然后重新启动VS并重新构建,可以解决问题。消息应该消失。我知道,这不是一个真正的解决方案,但它的工作原理。

+0

根据我原来的帖子,完全禁用ReSharper并不能解决问题。 – Brian 2014-01-21 14:08:02

+0

@Brian你的意思是“按我的原帖”?我看不到任何提示您禁用ReSharper的提示。你说,ReSharper强调了MySite。所以当你禁用ReSharper时,它仍然是强调的?或者我错了? – sprinter252 2014-07-30 07:42:06

+1

从原始帖子中:“禁用ReSharper可防止出现此错误,但不能解决问题。”问题是,“网站工作和编译完美,但智能感知在myID的孩子中断了。” – Brian 2014-07-30 12:55:10

相关问题