다음을 통해 공유


방법: 웹 배포 패키지에서 웹 배포 매개 변수 사용

웹 배포 패키지를 만들고 설치하는 경우 웹 배포 매개 변수를 사용하는 방법을 설명합니다. 패키지가 설치될 때 필요한 일부 값을 알 수 없는 상태에서 패키지를 만들어야 하는 경우 웹 배포 매개 변수가 유용합니다. 예를 들어 패키지를 만드는 사용자가 패키지 설치에 필요한 암호를 모를 수 있습니다. 또는 같은 패키지를 여러 번 설치하거나 매번 다른 설정을 지정해야 하는 경우 웹 배포 매개 변수가 유용합니다. 예를 들어 테스트 환경과 프로덕션 환경에 동일한 패키지를 설치하지만 각 환경에 대해 서로 다른 WCF 끝점을 지정해야 할 수 있습니다.

이 항목에서는 사용자가 배포 패키지를 만들고 설치하는 방법을 알고 있다고 가정합니다. 자세한 내용은 방법: Visual Studio에서 웹 배포 패키지 만들기을 참조하십시오.

배포에 데이터베이스 스크립트 매개 변수 사용

SQL Server 스크립트에 매개 변수를 포함할 수 있습니다. 다음 예제에서는 SQL Server 스크립트의 이름이 logText인 변수를 포함하고 여기에 기본값 "DefaultText"를 할당하는 방법을 보여 줍니다.

:setvar logText DefaultText

INSERT [dbo].[Log] ([LogText]) VALUES (N'$(logText)')
GO

Visual Studio에서 데이터베이스 업데이트를 선택하고 데이터베이스 업데이트 구성를 클릭하여 배포하는 동안 실행해야 하는 SQL Server 스크립트를 지정할 수 있습니다. 스크립트매개 변수를 포함 하는 경우 Visual Studio에서 배포 패키지에 대한 웹 배포 매개 변수를 자동으로 만듭니다. IIS 관리자를 사용하든 명령줄 프로세스를 사용하든 간에 패키지를 설치할 때 이러한 매개 변수에 대한 값을 제공할 수 있습니다.

배포에 데이터베이스 스크립트 매개 변수를 사용하려면

  1. 매개 변수가 하나 이상 포함된 사용자 지정 SQL 스크립트를 만듭니다.

  2. 게시 프로필을 구성하는 경우 데이터베이스 업데이트 구성 대화 상자에 스크립트를 추가 합니다.

  3. 배포 패키지를 만듭니다.

  4. deploy.cmd 파일을 사용하여 패키지를 설치하고 기본값과 다른 값을 제공하려면 패키지를 설치하기 전에 SetParameters.xml 파일에서 기본값을 변경합니다.

    예를 들어 이전 예제에 표시된 스크립트를 추가한 경우 SetParameters.xml 파일은 다음 예제와 같이 표시될 수 있습니다.

    <parameters>
      <setParameter name="IIS Web Application Name" 
        value="Default Web Site/WebApplication1_deploy" />
      <setParameter name="ApplicationServices-Deployment Connection String"
        value="" />
      <setParameter name="Sql script variable $(logText) in ApplicationServices-Deployment scripts"
        value="DefaultText" />
      <setParameter name="ApplicationServices-Deployment Connection String"
        value="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" />
    </parameters>
    

    강조 표시된 XML 요소의 value 특성을 변경하여 스크립트를 실행할 때 사용할 logText 매개 변수 값을 설정할 수 있습니다.

  5. IIS 관리자를 사용하여 패키지를 설치할 경우 다음 그림에 표시된 것처럼 응용 프로그램 패키지 정보 입력 대화 상자에서 매개 변수 값을 입력하라는 메시지가 표시됩니다.

    IIS 관리자 패키지 정보 입력 대화 상자

Web.Config 파일 설정에 배포 매개 변수 사용

값이 무엇인지 미리 알고 있는 경우에는 Web.config 파일 변환을 사용하여 배포된 Web.config 파일의 설정을 변경할 수 있습니다. 자세한 내용은 ASP.NET 사이트의 Web.config 파일 변환을 참조하십시오. 하지만 패키지를 만들 때가 아니라 패키지를 설치할 때 특정 설정의 값을 지정하려면 배포 매개 변수를 사용하는 것이 더 좋습니다. 예를 들어 패키지가 설치될 때 다음과 같은 설정을 구성할 수 있습니다.

  • WCF 서비스 끝점

  • 웹 서비스 끝점

  • 암호화 키와 같은 보안 관련 정보

배포 매개 변수를 사용하려면 프로젝트 디렉터리에 있는 XML 파일에서 이를 선언해야 합니다. 매개 변수를 선언할 때 기본값을 정의할 수 있습니다. 그런 다음 패키지를 설치할 때 실제로 배포되는 값을 변경할 수 있습니다.

Web.Config 파일 설정에 배포 매개 변수를 사용하려면

  1. 빈 텍스트 파일을 만들고, 이름을 parameters.xml로 지정하고, 프로젝트 폴더(프로젝트의 .csproj 또는 .vbproj 파일이 포함된 동일한 폴더)에 저장합니다.

  2. 다음 예제와 같이 파일에 이름이 parameters인 루트 요소를 추가합니다.

    <parameters>
    </parameters>
    
  3. 추가하려는 각 매개 변수에 대해 다음 단계를 수행합니다.

    1. parameters 루트 요소에서 다음 예제에 표시된 것처럼 name, description, defaultValue 및 tags 특성이 포함된 parameter 요소를 만듭니다.

      <parameters>
        <parameter name="WebService1 Endpoint Address" 
          description="Please provide the endpoint address for the Web service that you want to call."
          defaultValue=https://contoso.com/WebService1.asmx
          tags="">
        </parameter>
      </parameters>
      

      IIS 관리자를 사용하여 패키지를 설치할 경우 매개 변수에 대한 값을 입력할 수 있는 텍스트 상자와 함께 name 특성 값 및 description 특성 값이 UI에 표시됩니다. defaultValue 특성 값이 텍스트 상자에 미리 로드되어 있습니다.

      defaultValue 특성을 생략하거나, 빈 문자열로 설정하거나, 공백만 포함된 문자열로 설정하면 매개 변수가 필수 값으로 처리됩니다. Visual Studio deploy.cmd 파일을 사용하여 패키지를 배포할 때는 SetParameters.xml 파일에 값을 입력해야 합니다.

      tags 특성은 가능한 경우 UI에서 데이터 입력을 지원할 수 있도록 매개 변수가 나타내는 데이터 종류를 지정할 수 있습니다. 예를 들어 Boolean을 지정할 경우 UI의 드롭다운 목록에는 TrueFalse 옵션이 표시됩니다. DBConnectionString을 지정하면 텍스트 상자 옆에 단추가 표시됩니다. 이 단추를 클릭하면 연결 문자열 대화 상자를 표시할 수 있습니다. 사용 가능한 태그 목록은 Microsoft TechNet 웹 사이트에서 DeploymentWellKnownTag 열거형을 참조하십시오.

    2. 다음 예제에 표시된 것처럼 parameter 요소에서 kind, scope 및 match 특성이 포함된 parameterEntry 요소를 만듭니다.

      <parameters>
        <parameter name="WebService1 Endpoint Address"
          description="Please provide the endpoint address for the Web service that you want to call."
          defaultValue="https://contoso.com/WebService1.asmx"
          tags="">
        <parameterEntry 
          kind="XmlFile"
          scope="obj\\Debug\\Package\\PackageTmp\\Web\.config$"
          match="//setting[@name='WebService1EndPoint']/value/text()" />
        </parameter>
      </parameters>
      

      kind 특성은 매개 변수 값을 적용할 리소스 종류를 지정합니다. Web.config 파일은 XML 파일이므로 이 특성이 "XmlFile"로 설정됩니다.

      scope 특성은 변경하려는 특정 파일에 대한 경로를 식별하는 정규식입니다. 여기에서는 하위 폴더에 있는 Web.config 파일이 아닌 응용 프로그램 Web.config 파일만 변경합니다. 식에서 일치하는지 비교되는 경로는 패키지를 만들 때 .zip 파일에 저장된 경로입니다. 예제의 정규식은 디버그 빌드 구성에 대한 기본 패키지 생성 위치를 나타냅니다.

      match 특성은 변경하려는 XML 노드를 선택하는 XPath 식입니다. 이 식은 요소가 아닌 텍스트 노드 또는 특성 노드를 선택해야 합니다.

    3. 여러 위치에서 동일한 매개 변수 값을 업데이트하려면 매개 변수를 업데이트하려는 각 위치에 대해 parameterEntry 요소를 추가로 만듭니다.

  4. 패키지를 빌드합니다.

deploy.cmd 파일을 사용하여 패키지를 설치할 경우 SetParameters.xml 파일을 편집하여 기본값과 다른 값을 제공할 수 있습니다. parameters.xml 파일에서 매개 변수를 수동으로 만들 때는 Visual Studio에서 패키지를 빌드할 때 SetParameters.xml 파일에 이를 자동으로 추가합니다. 이에 대한 예제를 보려면 데이터베이스 스크립트 매개 변수에 적용되는 앞의 절차를 참조하십시오.

IIS 관리자를 사용하여 패키지를 설치할 경우 응용 프로그램 패키지 정보 입력 대화 상자에서 매개 변수 값을 입력하라는 메시지가 표시됩니다. 대화 상자에는 다음 그림에 표시된 것처럼 사용자가 지정한 이름, 설명 및 기본값이 표시됩니다.

IIS 관리자 패키지 정보 대화 상자

다른 시나리오에 매개 변수 사용

앞의 절차에서는 매개 변수가 유용한 일반적인 시나리오에 대해 자세히 설명했습니다. 매개 변수는 Web.config 파일이 아닌 텍스트 파일 또는 XML 파일의 내용을 업데이트해야 하는 경우와 같은 다른 시나리오에서도 사용할 수 있습니다. 다음 절차에서는 다른 시나리오에서 매개 변수를 사용하는 방법을 설명합니다.

다른 종류의 매개 변수를 사용하려면

  1. 앞에서 설명한 Web.config 설정에 대한 절차에 따라 parameters.xml 파일에 parameter 요소를 추가하여 매개 변수를 만듭니다.

  2. 매개 변수 값을 사용할 위치를 나타내는 parameterEntry 요소를 하나 이상 추가합니다.

    parameterEntry 요소에 할당할 수 있는 다른 특성 및 특성 값에 대한 자세한 내용은 Microsoft TechNet 웹 사이트에서 declareParam 및 setParam 사용을 참조하십시오.

참고 항목

개념

Visual Studio 및 ASP.NET에 대한 웹 배포 콘텐츠 맵

기타 리소스

Vishal Joshi의 블로그의 매개 변수화와 Web.config 변환

Vishal Joshi의 블로그의 웹 배포 매개 변수화