2012-05-02 20 views
5

'a Dönüştürme CodeFile'ımı CodeBehind'e gönderme konusunda bazı zorluklar yaşıyorum. Sormadan önce, Visual Studio'm yok ve Windows'da değilim. Kod, erişebildiğim bir IIS sunucusunda barındırılıyor.CodeFile'ı CodeBehind

<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeFile="anon.cs" %> 

Bu kod ancak bunu değiştirilmesi halinde, mükemmel çalışıyor: Eğer CodeFile ve CodeBehind arasındaki farkı anlamak emin

Parser Error Message: Could not load type 'corn.cheese.pies.CasLogin'. 
+2

Kod arkalığının, devralınan kontrol sınıfının web uygulaması DLL'sinde kullanılabilir olmasını gerektirdiğine inanıyorum. Visual Studio olmadan bunu yapabilmek için neden ihtiyaç duyuyorsunuz/beklersiniz? – millimoose

+1

Bir cevap değil, gerçekten, ama: Neden CodeFile -> CodeBehind'den gidiyorsunuz? Genelde insanlar "diğer * yoldan gitmektedir, çünkü CodeFile" daha yeni "(göreceli" 7 yaşında vs 9 yaşında "anlamındadır). –

cevap

14

Are:

<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeBehind="anon.cs" %> 

sayfa hata verir? Örneğin, farkla ilgili olarak CodeFile vs CodeBehind (her iki bağlantı da olsa kabul yanıtını dikkate almayın) veya this article'a bakın. Özetle

:

A CodeBehind dosyası web sitesinin bin klasöründe dağıtıldığı bir topluluk halinde derlenmiş varsayılır. ASP.NET altyapısı, aspx dosyanızı yüklediğinde, bu sınıfı bulmaya çalışmak için Inherits yönergesini kullanır. CodeBehind dosyası, öncelikle derlemeye yardımcı olmak için kullanılır (ve örneğin "Kaynağı Görüntüle"), ancak iş derleme zamanında yapılır.

A CodeFile dosyası, ASP.NET tarafından çalışma zamanında talep üzerine derlenmiş ve derlenmiştir. Web sitenizi eski modele geri dönecek şekilde "ön-derleme" yapabilirsiniz; bu, kaynak kodunuzu her web sitesine dağıtmak istemiyorsanız kullanışlıdır. Ancak, varsayılan olarak, CodeFile dosyanız, siteye dağıtılan bir .cs dosyasıdır ve sınıf ASP.NET geçici depolama klasöründe oluşturulur. (Teknik açıdan bakıldığında: CodeFile sayfalar, yalnızca C# dosyasında konuşlandırılan sınıfın yalnızca özel kod arkaplanı parçası olan tanımlarıdır; bu nedenle başlangıçta CodeFile bulunmamıştır, çünkü C# derleyicisi başlangıçta kısmi sınıflar yapamazdı .)

CodeFile'dan CodeBehind'a değiştirerek, ASP.NET'e C# dosyasının varlığını yok saymasını ve yalnızca derlenmiş derlemede bulunmasını söylüyorsunuz. ASP.NET, derlenmiş derlemenin aslında aramanız için söylediğiniz sınıfı içermediğini size söyler.