所以我似乎很难将我的CodeFile引用转换为CodeBehind。在您问之前,我没有Visual Studio,而且我不在Windows上。该代码托管在我有权访问的IIS服务器上。
<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeFile="anon.cs" %>
该代码可以完美地工作,但是将其更改为:
<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeBehind="anon.cs" %>
页面返回错误:
Parser Error Message: Could not load type 'corn.cheese.pies.CasLogin'.
最佳答案
您确定您了解CodeFile和CodeBehind之间的区别吗?例如,关于差异,请参见CodeFile vs CodeBehind(忽略两个链接均是接受答案),或者参见this article。
简而言之:
假定CodeBehind
文件被编译成一个程序集,该程序集部署在您网站的bin
文件夹中。当ASP.NET引擎加载您的aspx
文件时,它使用Inherits
指令尝试查找该类。 CodeBehind
文件主要用于辅助编译(和工具,例如“查看源代码”),但是工作是在编译时完成的。
ASP.NET会在运行时根据需要找到并编译CodeFile
文件。您可以“预编译”网站以使用旧模型,如果您不想将源代码部署到每个网站,这将非常有用。但是默认情况下,您的CodeFile
文件是已部署到站点的.cs
文件,并且该类是在ASP.NET临时存储文件夹中生成的。 (从技术角度来看:CodeFile
页面是partial class
定义,仅在类的自定义代码部分实际部署在C#文件中;这就是为什么CodeFile
最初不存在的原因,因为C#编译器最初无法执行部分类)
通过从CodeFile
更改为CodeBehind
,您告诉ASP.NET忽略C#文件的存在,仅在编译的程序集中查找它。反过来,ASP.NET告诉您编译后的程序集实际上并不包含您告诉它要查找的类。
关于c# - 将CodeFile转换为CodeBehind,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10417365/