2011. 2. 17. 02:32ㆍOthers
Transfrom Web.config when deploying a web application project
Web Project Deployment 작업을 진행할 때, 대부분의 경우 Web.config에 있는 특정한 값을 환경에 따라 바꾸어주는 작업을 진행하게 됩니다. 예를 들어서 DB ConnectionString변경, Debug Mode 등의 값들은 호스팅 할 때와 개발할 때 값을 다르게 설정해서 쓰는게 대부분입니다. 여기에서는 Transform File를 이용해서 Deployment과정에 자동으로 Web.config값이 변경되도록 하는 방법을 안내드릴 것입니다.
Creating and coding a transform file
Web.config의 특정 값이 자동으로 Deployment 과정에 바뀌도록 하기 위해서는 Transform File를 작성해야 합니다. 이 파일은 Build Configuration과 연관이 있습니다. 기본적으로 Build Configuration에는 Debug, Release Mode가 설정되는데, 마찬가지로 Web.config에도 Debug와 Release Mode용 Trnasform File가 기본적으로 생성됩니다. 물론 직접 Build Configuration과 상응하는 Transform File를 생성할 수 있습니다.
- 기본적으로 생성되는 Debug, Release가 아닌 다른 Transform File를 생성하기 위해서는, 먼저 해당 Build Configuration을 먼저 생성해야 합니다.
Menu의 Build에 존재하는 Configuration Manager를 실행하여 Build Configuration을 새로 생성하실 수 있습니다. - Solution Explorer에서 Web.config에 +아이콘이 존재한다면 이미 Transform File가 생성되어있다는 의미입니다. +아이콘을 누르면 각 Transform File가 나타납니다.
Transform File Name는 Configuration Manager에 설정되어 있는 Build Configuration Name과 Web.Config 파일명이 조합되어 나타납니다. 예를 들어 Debug와 Release Build Configuration의 Transform File Name는 Web.debug.config, Web.release.config입니다. - 만약 Build Configuration에 해당하는 Transform File이 없으면 Web.config를 마우스 우 클릭하시고 Add Config Transforms를 클릭 하십시요.
- Build Configuration에 실행될 해당하는 Transform File를 열고 변경 규칙을 작성하시면, 해당 Build Configuration으로 Build가 진행될 때 자동으로 Web.config파일은 Transform File에 명명된 규칙대로 변경될 것입니다. 이 작성 규칙은 잠시 후에 다루겠습니다.
How to:Disable Web.config Transformation
Transform File를 설정해두면 Deployment 작업을 진행 할 때 자동으로 Web.config가 변경되도록 할 수 있습니다. 하지만, Transform File이 적용되지 말아야 할 예외상황에 직면할 때가 있습니다. 예를 들어 호스팅 하고 있는 Application에 문제가 발생했고, 잠시나마 문제를 급히 수정하고 Debug Mode를 True로 설정하여 문제가 발생하는지 지속적으로 확인하고 추적해야 한다고 할 때가 있을 것입니다.
만약 Web.confg Transformation 기능을 중지하고 싶다면 아래와 같은 방법을 사용할 수 있습니다.
- Transform File를 열고 해당 코드를 주석 처리합니다. 가장 간단하고 언제든지 복구할 수 있는 방법입니다.
- Transform File명을 Build Configuration Name과 다르게 설정합니다. 이 값의 설정은 Visual Studio가 아닌 Window Explorer상에서 진행해야 합니다. Web.release.config를 Web.release_x.config로 설정하면 Release Build Configuration으로 Deployment를 진행할 때 해당 Transformation이 실행되지 않을 뿐 별 문제는 없습니다.
- Transform File를 삭제를 하는 방법도 있습니다. 단 복구가 불가능함에 유의 하십시요.
- Project File을 열고 TransformWebConfigEnabled Element의 값을 false로 설정함으로써 Transform File가 실행되지 않게 할 수 있습니다.(Project File란 .csproj, .vbproj 을 말합니다.) Project File를 직접 수정하면 Visual Studio GUI 환경에서 할 수 없는 다채로운 설정을 추가할 수 있습니다. 예를 들어 Auto Delpoy의 Connection Stirng 자동 변경 서비스를 AutoParameterizationWebConfigConnectionString Elemnt 값을 설정함으로써 동작하거나 동작하지 않게 제어하실 수 있습니다.
- Project File를 편집기로 엽니다. Solution Explorer에서 해당 Project를 마우스 우 클릭으로 선택하고, Unload Project를 해당 Project에 실행합니다. 다시 마우스 우 클릭하시면 Edit를 통해 수정할 수 있습니다.(Window Explorer 상에서 직접 여셔도 됩니다.)
- 수정하고자 하는 Build Configuration의 값을 담고 있는 PropertyGroup Element를 찾습니다.
- 해당 PropertGroup Element의 하위에 AutoParameterizationWebConfigConnectionStrings Element와 TransformWebConfigEnabled Element가 설정하려는 값을 가진 채로 위치하도록 합니다. 예를 들어 Debug Build Configuration의 Web.confg Transformation기능을 끄려면 아래와 같이 작성하십시요.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <TransformWebConfigEnabled>False</TransformWebConfigEnabled> <AutoParameterizationWebConfigConnectionString>False</AutoParameterizationWebConfigConnectionString> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup>
- 수정한 파일을 저장하고, 해당 Project를 마우스 우 클릭 선택하여, Reload Project를 클릭하시면 변경사항이 적용된 체로 프로젝트가 읽혀집니다.
Web.config Transformation 문법은 다음 포스트에서 다루도록 하겠습니다.
'Others' 카테고리의 다른 글
[SSMSE] Microsoft SQL Server Managenemt 2008 Tool 설치 (0) | 2011.09.23 |
---|---|
[Outlook] Outlook에서 Resizing을 막는 Contents작성법 (0) | 2011.09.18 |
[Tip] IE6, IE7, FF, Safari를 설치 없이 사용하는 방법! (0) | 2010.03.11 |
[Tip] Driver를 자동으로 찾아주는 프로그램. (0) | 2010.03.09 |
[Tip] Visual Studio 단축키 정리 (0) | 2010.01.11 |