什么原因导致瞬态aspx第一行编译错误?

时间:2010-02-08 22:43:57

标签: asp.net rebuild

每隔一段时间,当我编辑aspx或ascx页面时,Visual Studio会开始告诉我文件的第一行有错误。例如,现在,它在第1行说Argument missing。那条线只是你的典型标题,没有明显的问题(对我来说),当错误开始出现时我甚至没有改变那一行

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyControl.ascx.cs"
Inherits="MyNamespace.MyControl" Debug="true" %>

与大多数编译错误不同,构建仍然成功。 (至少这次它确实如此。)

值得注意的是,此文件或其作为[p | c] x.cs

不会引发任何其他错误或警告

有时,为了摆脱它,我被迫撤消我的更改,直到它消失并仔细重做我想要的。这一次,抓住吸管,我清理并重建了解决方案。当我输入此内容时,错误在重建完成后的某个时间消失了。

我怀疑当我在标记中修改数据绑定时经常会发生这种情况。有时,如果我在关闭斜杠之前错过了标签内的空格,似乎会出现这样的情况,如下所示:

[...] Text='<%# Eval("Field") %>'/>

[...] Text='<%# Eval("Field") %>' />

......但在这种情况下,这似乎不是问题。

编写PHP和Perl时,有时解释器会抛出引用文件最后一行的错误。随着时间的推移,我学会了在某处找到不平衡的括号和其他分隔符。 ASP.NET中的这个问题感觉类似,但更奇怪,因为它是第一行,而不仅仅是上面的错误,层叠到底部。或者只是Visual Studio暂时混淆了?任何专业人士都可以对这个问题有所了解吗,理由为何会发生?我希望有一些逻辑(而不是我自己建立的迷信)在下次它丑陋的头脑时抛出它。

2 个答案:

答案 0 :(得分:1)

这是我发现的 - 当我收到此错误时,通常在aspx页面中有一个带有函数调用的代码,实际上缺少参数 - 比如这个

<asp:DropDownList DataValueField="Value" DataTextField="Text" 
runat="server" Width="90%" ID="Duration" 
DataSource='<%# Utils.GetDropDownList(, ) %>' />

请注意,调用Utils.GetDropDownList(, )

中缺少参数

因此错误消息未正确指向aspx页面中的行,但实际上代码存在问题。 希望这能节省一些时间。

答案 1 :(得分:0)

现在已经观察了几次,当解决方案的重建有序时,似乎会发生这种情况。我倾向于在大多数时候使用Build,因为它很方便地映射到F6。 (我目前还没有意识到Rebuild的内置映射。)当事情发生奇怪的错误时,请记得使用Rebuild。