[英]Converting CodeFile to CodeBehind
所以我似乎在將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 (忽略接受答案,但兩個鏈接都是dea)或本文關於差異。
簡而言之:
假定CodeBehind
文件被編譯到部署在您網站的bin
文件夾中的程序集中。 當ASP.NET引擎加載您的aspx
文件時,它使用Inherits
指令來嘗試查找該類。 CodeBehind
文件主要用於輔助編譯(和工具,例如“查看源代碼”),但工作在編譯時完成。
ASP.NET會在運行時根據需要定位和編譯CodeFile
文件。 您可以“預編譯”您的網站以回退到較舊的模型,如果您不想將源代碼部署到每個網站,這將非常有用。 但默認情況下,您的CodeFile
文件是部署到站點的.cs
文件,該類是在ASP.NET臨時存儲文件夾中生成的。 (從技術角度來看: CodeFile
頁面是partial class
定義,只有partial class
的自定義代碼隱藏部分實際部署在C#文件中;這就是CodeFile
最初不存在的原因,因為C#編譯器最初不能做部分類。)
通過從CodeFile
更改為CodeBehind
您告訴ASP.NET忽略C#文件的存在,並且只在已編譯的程序集中查找它。 反過來,ASP.NET告訴您編譯的程序集實際上並不包含您告訴它要查找的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.