【问题标题】:ASP.Net page builds fine with "Build Page" in Visual Studio, but gives "does not exist in the current context" errors with "Build Web Site"ASP.Net 页面在 Visual Studio 中使用“构建页面”构建良好,但在“构建网站”中给出“在当前上下文中不存在”错误
【发布时间】:2013-01-16 04:33:10
【问题描述】:

使用 Visual Studio 2010,我将一个表单添加到一个 ASP.Net 页面,该页面已经是我项目的一部分。称它为 myPage.aspx。我实际上是从另一个应用程序的工作页面复制和粘贴表单。所以首先我将 .aspx 代码粘贴到 myPage.aspx 文件中,然后将 C# 代码粘贴到 myPage.aspx.cs 文件中。我没有复制 myPage.aspx 文件中的 page 指令,也没有复制 myPage.aspx.cs 文件中的任何类声明代码。我只是将一个表格粘贴到 myPage.aspx 的正文中,并将一些处理代码提交到 myPage.aspx.cs。

当我尝试构建网站时,每个控件都出现错误,提示“当前上下文中不存在名称 'whateverControl'”。这对我来说毫无意义,因为 Intellisense 正在工作,发现控件很好。我仔细检查了 Page 的 CodeFile 和 Inherits 属性,它们都是正确的。

此外,如果我使用“构建页面”命令,页面构建成功。只有当我使用“构建网站”时,我才会得到一长串“不存在”错误。 “重建网站”没有帮助。我什至关闭了 Visual Studio 并重新打开它,它没有任何区别。我最终发现了问题,所以我在这里回答我自己的问题。

【问题讨论】:

    标签: asp.net visual-studio-2010 build compiler-errors


    【解决方案1】:

    原来 myPage.aspx 和 myPage.aspx.cs 完全没问题。问题是,在以前的某个时间,其他人将我正在处理的 .aspx 页面(不是 .aspx.cs)复制到另外两个 .aspx 页面,并且他们在执行此操作时还复制了 CodeFile 和 Inherits 属性。因此,这两个页面都具有与我正在处理的页面完全相同的 CodeFile 和 Inherits 设置。这意味着三个页面在其 Page 指令中具有完全相同的设置:

    CodeFile="myPage.aspx.cs" Inherits="myPage"

    显然这是编译器允许的,只要 .aspx.cs 文件中没有代码在寻找仅存在于其中一个页面中的控件,它就可以工作。

    我从另外两个复制的页面中删除了这些属性,然后一切都成功编译了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2020-03-09
      • 2017-04-28
      • 2018-12-03
      • 1970-01-01
      相关资源
      最近更新 更多