CodeBehind를 여러 파일에 배치하려면 어떻게합니까?
-
23-08-2019 - |
문제
시각적 웹 개발자 2008 Express Environment에서 올바르게 컴파일하고 실행할 내용과 내 웹 서버에서 실패한 내용과 관련하여 많은 불일치가 발생합니다.
특히 ASPX 및 ASPX.CS CodeBehind와 웹 개발자 프로젝트에 여러 개의 추가 .CS 파일이 있습니다. 개발 서버에서 잘 구축되고 괜찮습니다. 파일을 서버에 업로드하면 CodeBehind는 다른 .CS 파일을 알지 못하는 것 같습니다.
내 ASPX 앱을 추가 .CS 파일을 상속하는 올바른 방법은 무엇입니까?
--- 업데이트 --- 내가 필요한 대답을 실제로 찾지 못하기 때문에 내가하고있는 일에 대해 조금 더 명확하게하겠습니다.
세 가지 파일이 있습니다.
default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Import Namespace="UtilClasses" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
default.aspx.cs
public partial class _Default : Page { }
app_code/utilclasses.cs
namespace UtilClasses {
public class AClass {
public const int A = 1;
}
}
이 예에서 다음 중 하나를 수행하려고하면 웹 서버에서 컴파일 오류가 발생합니다.
- APP_Code를 @Import를 참조하십시오
- ASPX.CS CodeBehind에서 포함 된 코드를 호출하거나
- ASPX 페이지에서 코드를 호출하십시오.
Soltuion은 Web Developer 2008에서 잘 컴파일합니다. Soltuion은 FTP를 통해 내 웹 서버에 자동 게시되는 웹 사이트입니다. 게시중인 파일의 정확한 목록은 다음과 같습니다.
- default.aspx
- default.aspx.cs
- app_code/utilclasses.cs
- web.config
해결책
배포 문제가있는 것 같습니다.
단지 게시 (빌드 메뉴에는 게시 항목이 있습니다.) 웹 응용 프로그램/사이트를 폴더로 만든 다음 해당 폴더의 파일을 서버로 이동합니다.
디렉토리에 오래된 어셈블리 파일과 새로운 클래스가 있다고 생각합니다.
도움이 되었기를 바랍니다
다른 팁
부분 클래스를 사용할 수 있습니다. 파일 ( *.cs)을 추가하고 클래스를 부분적으로 정의하십시오. 그래서, 당신은 당신의 방법, 속성을 분산시킬 수 있습니다.
이것은 웹 응용 프로그램에서 코드를 구성하는 매우 일반적인 문제입니다. 다음은 문제에 참석하는 데 도움이되는 몇 가지 포인터입니다.
단일 프로젝트를 사용하고 ASP.NET 웹 사이트 프로젝트 인 경우 .CS 파일을 APP_Code 폴더에 넣으십시오.
네임 스페이스를 현명하게 사용하고 네임 스페이스의 내용을 추적하십시오. Resharper와 같은 것이 있다면이 작업을 저장합니다.
이상적으로는 웹 프로젝트에 페이지 관련 및 Util 클래스 만 있어야합니다. 다른 기능을 위해 C# Express를 사용하여 라이브러리를 만듭니다. Nunit/Mbunit 등을 사용하여 이러한 라이브러리를 테스트하십시오.
Cassini에서 무언가가 실행되지만 IIS에 있지 않은지 의문이 있다면. 개발자 또는 로컬 II만이 유일한 솔루션입니다.
도움이되기를 바랍니다!