asp.net2006. 10. 1. 17:15

Team Foundation Server에서 제공하는 Team build기능에서, 솔루션을 지정하게 되면 그 솔루션에 포함된 모든 프로젝트가 빌드되게 된다. 그러나 솔루션에 웹 사이트가 포함되어 있을 경우에 문제가 약간 있는데.. 이건 빌드가 되지 않는다.. 결과물에 다른 DLL이나 EXE는 있을 지 몰라도, 웹 사이트는 없을 것이다...-_-;;

이건 VS2003, 닷넷 1.X에서 우리가 쓰던 Web Application과 VS2005의 Web Site가 전혀 다른 개념이기 때문이다. Web Site는 사실 굳이 컴파일할 필요가 없다. Runtime에 자동으로 컴파일이 되기 때문이다. 그러므로 사실 팀 빌드에서 포함시킬 필요도 없긴 하겠지만.. Web Application 과 비교해봤을 때 아무래도 다음과 같은 단점이 있게 된다.

소스가 그대로 서버의 디렉토리에 노출된다.
미리 컴파일된 것보다는 Runtime시에 컴파일되는 것이 느릴 것이다. (물론 처음에 한 번만 하겠지만.., 그리고 이 때문에 소스만 바꿔도 컴파일할 필요없이 운영된다는 것은 아주 좋은 점이긴 하다)
실수로 컴파일 에러가 나는 소스가 올라갈 수도 있다.

Aspnet_compiler.exe와 aspnet_merge.exe를 사용해서 기존의  웹 애플리케이션과 똑같은 형태로 컴파일할 수 있긴 하다. 하지만 과정이 매우 복잡하고, 결정적으로 귀찮다는...-_-;;;; 이 과정을 자동화시킬 수 있는 툴이 있다. 바로 Visual Studio 2005 Web Deployment Project이다. 이건 VS2005에 Add-In으로 간단하게 설치할 수 있고, 아래 주소에서 다운로드 받을 수 있다.

http://msdn2.microsoft.com/en-us/asp.net/aa336619.aspx

사용방법은 간단하다. 아래 그림처럼 웹 사이트에 오른쪽 마우스를 누르면, 컨텍스트 메뉴가 뜨는데 거기서 Add Web Deployment Project를 누르면 된다.

팝업 화면이 뜨는데, 이름과 경로를 입력하면 된다. 입력한 이름은 그 Deployment Project의 이름이 되기도 하지만, 실제 출력되는 웹 DLL의 이름이 되기도 한다.

Debug(혹은 Release - 빌드 옵션에 따라서) 폴더에 가면, ASP.NET 1.X시절과 같은 형태로 출력물이 나온 것을 볼 수 있다. Web Page의 aspx와 bin 폴더 아래의 DLL들.. 이제 이 결과물을 IIS에서 만든 가상 디렉토리에 복사하기만 하면 된다. 아래 그림은 결과물 폴더와 bin 폴더인데, bin 폴더에 보면, 좀 전에 만든 Web Deployment Project의 이름과 똑같이 DLL이 만들어진 것을 볼 수 있다.

Posted by kkongchi