App_Code 폴더를 통하여 여러 프로그래밍 언어 동시에 사용하기

ASP.NET 2.0 이후로는 코드 비하인드에서 주로 사용하는 C# 언어 말고도 동시에 Visual Basic .NET, C++ CLR, JScript.NET 등의 프로그래밍 언어를 사용할 수 있습니다. 그러나 App_Code 폴더의 경우 동시에 여러 프로그래밍 언어를 사용하여 컴파일하려고 할 경우 아래와 같은 오류 메시지를 만나게 됩니다.



위와 같은 오류가 발생하였을 경우 어떻게 처리하면 좋을까요? 이 때에는 App_Code 밑에 별도의 분리된 Sub Directory를 구축하여 언어 별로 달리 구성하는 것이 가능합니다.



web.config 파일에서 <system.web> 요소 아래에 <codeSubDirectories> 컬렉션 요소에 별도로 구분하고 싶은 서브 디렉터리의 이름을 지정하고, 솔루션 탐색기의 디렉터리 구조에서처럼 App_Code 폴더 밑에 같은 이름의 디렉터리를 생성하여, 여기에 다른 프로그래밍 언어의 코드를 지정해두면 설정은 끝납니다.


이렇게 변경함으로서, App_Code 폴더의 코드는 C#만을, App_Code 폴더 내의 SubDir 폴더의 코드는 VB.NET만을 사용하면서도, 단일 웹 사이트 내에 모두 연결되는 어셈블리들이기 때문에 Public으로 노출하는 어셈블리들은 프로젝트에서 사용이 가능합니다. 만약 Reflection을 활용해야 하는 경우 주지해야 할 것이 하나 있는데 서브 디렉터리로 분리한 경우 이것은 App_Code라는 어셈블리와는 또 다른 별개의 어셈블리가 된다는 점입니다. 같은 방법으로 Phalanger (PHP의 .NET Framework 구현), JScript.NET, IronPython, C++ CLR 등의 코드를 쉽게 ASP.NET 사이트 안으로 통합할 수 있습니다.


동적으로 생성되는 어셈블리임을 감안하여 Assembly에 적용할 수 있는 Attribute를 사용하여 식별이 편리하도록 구성하면 Reflection을 필요로 하는 경우 도움이 될 수 있습니다.

댓글 남기기