asp.net – Visual Studio 2008使用CodeBehind失去了对于ASCX的智能感知(但是适用于CodeFile)?

前端之家收集整理的这篇文章主要介绍了asp.net – Visual Studio 2008使用CodeBehind失去了对于ASCX的智能感知(但是适用于CodeFile)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的.ASCX文件的顶部有以下定义:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ArticleView.aspx.cs" Inherits="MyNameSpace.ArticleView" %>

在该控件中,我使用了<%=%>指代我在代码隐藏文件中声明的成员.如果我编译和部署控件,它可以正常工作.但是在Visual Studio中,我得到了很多设计时错误,“{some variable}在当前上下文中不存在”.而Intellisense也是一样的:它适用于UserControl的成员,但找不到我自己声明的成员.还有其他问题.一般来说,一切都指向ASP.articleview_ascx类生成的事实,不知何故不能继承自MyNameSpace.ArticleView类.

我发现如果我将CodeBehind属性切换到“CodeFile”:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ArticleView.aspx.cs" Inherits="MyNameSpace.ArticleView" %>

突然间Intellisense工程和所有的设计时错误消失.但我不想做运行时编译,或部署我的.ASCX.CS文件 – 所以我不能使用CodeFile.

我检查了简单的东西,就像确保我的CodeBehind文件名正确& Inherits类具有正确的命名空间等(并且因为在将属性更改为CodeFile之后它们正常工作,所以它们必须指向正确的位置….)但是我缺少什么?为什么不能处理CodeBehind属性

谢谢,
史蒂夫

更新:从下面的线程 – 基本的问题是,为什么不使用CodeFile?答:当我尝试在我的文件中使用CodeFile =部署时,部署后我收到以下堆栈跟踪(全部呈现):

/_layouts/Pages/ViewPage.aspx.cs’ does not exist. at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) at System.Web.UI.TemplateParser.ProcessCodeFile(VirtualPath codeFileVirtualPath) at System.Web.UI.TemplateParser.ProcessMainDirectiveAttribute(String deviceName,String name,String value,IDictionary parseData)

(这是从/_layouts/Pages/ViewPage.aspx的请求.ViewPage是具有其他几个控件的页面,包括我原始示例中提到的ArticleView,它恰好是第一个失败的文件 – 如果我回到CodeBehind =在ViewPage中,然后包含ASCX与CodeFile =将以相同的方式失败.)这似乎是页面编译器抱怨,因为继承的codebehind类不能在任何加载的DLL中找到,所以它期望必须有一个CS文件做按需编译.

这里的问题是我不想部署CS文件,只是ASPX / ASCX.阅读了许多文章this great one我知道各种新的部署模式,虽然我从来没有使用任何东西,但一个Web应用程序项目(从VS2003转换,我们是迟到的采纳者,2005年和WAP模型已经当我们从2003年开始的时候被添加.)在许多VS2005 / 8项目中,我从未遇到过CodeBehind =的问题,直到这个Intellisense问题出现了…虽然这不足以帮助我在这种情况下“部署到SharePoint,这引入了一个全新的复杂程度.

由于我以前没有使用过CodeFile,所以很有可能我在构建时想要在VS中设置一些选项,以强制预编译.像我今天一样,我只需要能够部署一套具有单一代码隐藏DLL的ASPX / ASCX.而今天,CodeBehind = …它只是有原来提到的Intellisense问题,这是真的我想要修复:)

会发布更多,因为我确定什么文件可能与问题有关…

解决方法

您是否检查了您的项目文件的Build Action?通过将ArticleView.ascx.designer.cs上的构建操作设置为无,我已经复制了您的问题.我也可以编译时使用CodeFile等,我99%确定这是你的问题.

猜你在找的asp.Net相关文章