我有我的.ASCX文件的顶部如下定义:Visual Studio 2008与CodeBehind(但适用于CodeFile)ASCX失去intellisense?
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ArticleView.aspx.cs" Inherits="MyNameSpace.ArticleView" %>
在这种控制我利用<%=%>块来指代我在后台代码已经声明会员文件。如果我编译和部署控件,它工作正常。但在Visual Studio中,我收到了很多设计时错误,“当前上下文中不存在{some variable}。” Intellisense也打破了它:它适用于UserControl的成员,但找不到我自己的声明成员。还有其他问题。一般来说,所有事情都指向这样一个事实,即生成的ASP.articleview_ascx类不知何故从MyNameSpace.ArticleView类继承。
我发现,如果我切换代码隐藏属性“的CodeFile”:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ArticleView.aspx.cs" Inherits="MyNameSpace.ArticleView" %>
突然智能感知工作,所有的设计时错误消失。但我不想做运行时编译,或者部署我的.ASCX.CS文件 - 所以我不能使用CodeFile。
我检查了简单的东西,比如确保我的CodeBehind文件名是正确的& Inherits类有适当的命名空间等等(因为它在将属性更改为CodeFile之后正常工作,那些必须指向正确的地方....)但是我错过了什么?为什么它不能处理CodeBehind属性?
感谢,
史蒂夫
更新:从下一个话题 - 基本的问题是,为什么不使用的CodeFile?答:当我尝试使用的CodeFile =在我的文件部署,部署我收到下面的堆栈跟踪后(在其整体呈现):
/_layouts/Pages/ViewPage.aspx.cs'不存在。 System.Web.UI.TemplateParser.ProcessMainDirectiveAttribute(String deviceName,String name,String value,IDictionary parseData)在System.Web.UI.TemplateParser.ProcessCodeFile(VirtualPath codeFileVirtualPath)上的System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) )
(这是来自于/_layouts/Pages/ViewPage.aspx的请求。的ViewPage的是,有几个其他控件,包括在我原来的例子中提到的ArticleView的页面。这恰好是第一个文件失败 - 如果我回到ViewPage中的CodeBehind =,那么带有CodeFile =的ASCX将以同样的方式失败。)这似乎是页面编译器的抱怨,因为在任何加载的DLL中都找不到继承的代码隐藏类,所以它预计必须有一个CS文件来进行按需编译。
这里的问题是我不想部署CS文件,只是ASPX/ASCX。阅读了许多文章,如this great one我知道各种新的部署模式,虽然我从来没有使用任何东西,但除了一个Web应用程序项目(从VS2003转换,我们是2005年的最新采用者& WAP模型已经)在许多VS2005/8项目中,我从来没有遇到过CodeBehind =的问题,直到这个Intellisense问题出现......尽管在这种情况下我没有帮助,部署到SharePoint,这引入了一个全新的复杂程度。
由于我之前没有部署过使用CodeFile,所以很可能我在构建时错过了一些选项,以便强制进行预编译。我只需要像我今天那样部署一组带有单个代码隐藏DLL的ASPX/ASCX。这就是今天与CodeBehind = ...它只是最初提到的Intellisense问题,这真的是我想修复:)
将发布更多,因为我确定哪些文件可能与问题相关...
你检查过生成操作上的文件? – 2009-10-15 01:22:44