为什么消息BC30560'mymodule_ascx'在名称空间'ASP'中出现模糊不清有时会消失?

时间:2008-10-08 07:55:22

标签: asp.net

通常在对VS2008 ASP.net项目进行更改时,我们会收到如下消息:

BC30560:'mymodule_ascx'在命名空间'ASP'中不明确。

重新编译或有时等待10秒并刷新页面后,这会消失。

任何摆脱它的方法?

10 个答案:

答案 0 :(得分:21)

我最近遇到了这个问题,它只发生在一台服务器上,即使所有服务器都运行相同的代码。我彻底调查了这个问题,以确保其他用户控件具有冲突名称,临时文件被清除等等。

解决问题的唯一方法(似乎是永久性的)是在web.config中将编译元素的批处理属性更改为false,如以下链接所示:

http://personalinertia.blogspot.com/2007/06/there-bug-in-compiler.html

<compilation debug="true" batch="false">

我坚信这实际上是该网站上建议的编译器中的一个错误。

答案 1 :(得分:14)

我刚刚通过以下链接帮助解决了这个问题: http://www.netomatix.com/development/usercontrols2.aspx

简而言之,您的课程称为MyModule。但是,如果未在@Control指令中指定ClassName属性,则编译器可能会将_ascx附加到控件的类,从而生成MyModule_ascx。由于页面找不到MyModule_ascx,它会在你脸上爆炸。你需要明确告诉它ClassName ...

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="MyModule.ascx.vb" ClassName="MyModule" %>

答案 2 :(得分:2)

另一种可能性:

http://channel9.msdn.com/forums/TechOff/157050-BC30560-mycontrolascx-is-ambiguous-in-the-namespace-ASP/

似乎在改变

方面取得了一些成功
src="mycontrol.ascx.cs"

CodeBehind="mycontrol.ascx.cs"

答案 3 :(得分:1)

我有时也会遇到这个问题。如果我没记错的话,它是由以下内容引起的:

<%@ Page Inherits="_Default" %>

或者

<%@ Page ClassName="_Default" %>

或类似的东西。我不是100%确定它属于哪个属性(已经有一段时间了)。

但是在你的Page指令中寻找像_Default这样的东西,并用你所有文件中的实际类名替换它们。出于某种原因,ASP.Net并不总是正确地解释_Default,产生临时的模糊引用。

答案 4 :(得分:1)

与之前的两个答案类似,您很可能在同一站点中拥有现有页面的“复制并粘贴”副本,然后这将包含相同的@Page指令,这将导致功能冲突(特别是因为.Net中的所有东西都默认为Partial Classes。)这个小宝石经常咬我。

只需更新“继承”即可指向您网页的特定内容(例如:您的网页名称以下划线为前缀 - 因为它通常不会保证是独一无二的),并确保您避开有两个公共部分类在不同的代码隐藏文件中命名相同(否则_Default [default.aspx]中的Page_Load将与_Default中的Page_Load冲突[default.aspx的副本])

答案 5 :(得分:1)

我刚刚遭遇了这个。在一些不相关的更新后,运行良好并且未被触及数月的东西开始随机失败。我重新编译,问题就会消失,只会重新出现在其他地方。

我似乎通过清除ASP.NET临时文件夹解决了这个问题,例如C:\ Windows \ Microsoft.NET \ Framework \ v2.0.xxxxx \ Temporary ASP.NET Files。这需要重新启动IIS才能真正清除它。

更新:我尝试将tempDirectory="e:\someotherfolder"添加到web.config的compilation元素中,这似乎取得了一些成功。还添加了batch="false",但不确定是否有效果。

答案 6 :(得分:1)

尝试更改web.config,将批处理设置为false

<compilation batch="false">
</compilation>

答案 7 :(得分:1)

对我来说,这个错误是一个红色的鲱鱼。实际上,其中一个用户控件存在由.NET 2.0,0到4.5迁移引起的错误,这些错误必须在代码中修复,但VS会抛出这种误导性的错误消息。在多次尝试升级项目之后,它最终开始在实际的代码行上出错,但我不知道如何在经过数小时的挫折和无聊的尝试来应用来自整个互联网的解决方案后重现这一点。

答案 8 :(得分:0)

对于最初是.net 1.1和2.0项目以及之后转换的项目,还使用MasterPages进行了此操作。在这两种情况下,@ MasterType指令都引用了虚拟路径。我更改为&lt;%@ MasterType TypeName =“MasterPages_MasterPage”%&gt;,清理了解决方案,问题就消失了。 HTH

答案 9 :(得分:0)

重建解决方案对我有用。