솔루션 소개Introduction to solutions

솔루션은 사용자 지정자 및 개발자가 앱용 Common Data Service를 확장하는 소프트웨어 단위를 작성, 패키징 및 유지 관리하는 방법을 다룹니다.Solutions are how customizers and developers author, package, and maintain units of software that extend Common Data Service for Apps. 예를 들어 영업, 마케팅, 고객 서비스 앱을 위한 Dynamics 365는 솔루션으로 구성됩니다.For example, the Dynamics 365 for Sales, Marketing, Customer Service apps are composed of solutions. 조직에서 앱용 Common Data Service를 사용하여 솔루션에 정의된 비즈니스 기능을 설치 및 제거할 수 있도록 사용자 지정자 및 개발자가 솔루션을 배포합니다.Customizers and developers distribute solutions so that organizations can use Common Data Service for Apps to install and uninstall the business functionality defined by the solution.

앱용 Common Data Service 또는 이전에 설치된 솔루션에 대한 모든 사용자 지정은 솔루션의 일부입니다.Every customization that you make to Common Data Service for Apps, or to a previously installed solution, is part of a solution. 적용되는 모든 변경 내용이 추적되며 종속성을 계산할 수 있습니다.Every change you apply is tracked and any dependencies can be calculated. 관리 솔루션을 내보낼 때 관리 솔루션은 해당 솔루션에 적용된 모든 변경 내용을 한 파일에 포함하며, 이 파일을 다른 Common Data Service for Apps 환경으로 가져올 수 있습니다.When you export a managed solution, it contains all the changes that have been applied for that solution into a file that you can then import into a different Common Data Service for Apps environment.

AppSource를 사용하여 여러 Common Data Service for Apps 환경 간에 사용자 지정 또는 확장을 전송하거나 솔루션을 배포하려는 경우 솔루션 프레임워크를 알고 있어야 합니다.If you intend to transport customizations or extensions between different Common Data Service for Apps environments or distribute solutions using AppSource, you must understand the solution framework.

관리 및 비관리 솔루션Managed and unmanaged solutions

관리비관리의 두 가지 솔루션이 있습니다.There are two types of solutions: managed and unmanaged.

관리 솔루션은 배포 및 설치를 위한 완전한 솔루션입니다.A managed solution is a completed solution that is intended to be distributed and installed.

  • 관리 솔루션의 구성 요소를 편집할 수 없습니다.You cannot edit the components of a managed solution.

  • 관리 솔루션을 내보낼 수 없습니다.You cannot export a managed solution.

  • 비관리 사용자 지정을 관리 솔루션의 구성 요소에 추가할 수 있습니다.You can add unmanaged customizations to components of a managed solution. 이렇게 하면 비관리 사용자 지정과 관리 솔루션 사이에 종속성이 생성됩니다.When you do this, you create a dependency between your unmanaged customizations and the managed solution. 종속성이 있으면 종속성을 제거하기 전까지는 관리 솔루션을 제거할 수 없습니다.When a dependency exists, the managed solution cannot be uninstalled until you remove the dependency.

  • 관리 솔루션을 삭제(제거)하면 그 안에 포함된 모든 사용자 지정 및 확장도 제거됩니다.When a managed solution is deleted (uninstalled), all the customizations and extensions included with it are removed.

    중요

    관리 솔루션을 제거하면 관리 솔루션의 일부인 사용자 지정 엔터티에 저장된 데이터, 관리 솔루션의 일부가 아닌 다른 엔터티의 관리 솔루션 일부인 사용자 지정 특성에 저장되는 데이터가 손실됩니다.When you uninstall a managed solution, the following data is lost: data stored in custom entities that are part of the managed solution and data stored in custom attributes that are part of the managed solution on other entities that are not part of the managed solution.

비관리 솔루션은 아직 개발 중이거나 배포용이 아닌 솔루션입니다.An unmanaged solution is one that is still under development or isn’t intended to be distributed.

  • 비관리 솔루션인 경우 계속해서 구성 요소를 추가하고 제거할 수 있습니다.While a solution is unmanaged, you can continue to add and remove components to it.

  • 비관리 솔루션을 내보내서 한 환경에서 다른 환경으로 비관리 사용자 지정을 전송할 수 있습니다.You can export an unmanaged solution to transport unmanaged customizations from one environment to another.

  • 비관리 솔루션이 삭제되면 그 안에 포함된 사용자 지정의 솔루션 컨테이너만 삭제됩니다.When an unmanaged solution is deleted, only the solution container of any customizations included in it is deleted. 모든 비관리 사용자 지정은 계속 적용되며 기본 솔루션에 속합니다.All the unmanaged customizations remain in effect and belong to the default solution.

  • 비관리 솔루션이 완성되고 배포하기를 원하는 경우 관리 솔루션으로 내보내야 합니다.When the unmanaged solution is complete and you want to distribute it, export it as a managed solution.

    참고

    원래 비관리 솔루션이 포함된 동일한 환경으로 관리 솔루션을 가져올 수 없습니다.You cannot import a managed solution into the same environment that contains the originating unmanaged solution. 관리 솔루션을 테스트하려면 관리 솔루션을 가져올 수 있는 별도의 환경이 필요합니다.To test a managed solution, you need a separate environment to import it into.

솔루션 게시자Solution publishers

각 솔루션은 솔루션 게시자에 연결됩니다.Each solution is linked to a solution publisher. 솔루션 게시자는 사용자 지정 접두사 값 외에도 게시자에게 문의하는 방법에 대한 정보를 제공합니다.The solution publisher provides information about how to contact the publisher as well a customization prefix value. 기본값은 new입니다.The default value is new.

스키마 변경 내용이 솔루션의 일부로 포함되는 경우 솔루션 게시자 사용자 지정 접두사는 스키마 항목의 이름 앞에 붙습니다.When any schema changes are included as part of a solution, the solution publisher customization prefix is prepended to the name of the schema items. 사용자 지정 작업에도 이 값이 붙습니다.Any custom actions also have this value appended to them. 어떤 솔루션이 스키마 항목 또는 사용자 지정 작업을 추가했는지 쉽게 인식할 수 있으므로 유용합니다.This is valuable because it allows for easy recognition of which solution added the schema item or custom action. 솔루션의 모든 스키마 항목 및 사용자 지정 작업에서 동일한 사용자 지정 접두사를 사용해야 하는 것은 아니지만, 그렇게 하시기를 강력하게 권장합니다.It is not required for all schema items and custom actions in a solution to use the same customization prefix, but it is strongly recommended.

중요

솔루션 만들기를 시작하기 전에 솔루션 게시자 레코드를 만들고 거기에 연결된 새 솔루션을 만듭니다.Before you start creating a solution, you should create a solution publisher record and create a new solution linked to it. 사용자 지정 접두사가 본인에게 적절한 값을 나타내는지 확인해야 합니다.You should make sure the customization prefix represents a value that makes sense for you.

제공한 솔루션에 업데이트를 게시하려는 경우 솔루션 게시자의 선택이 중요합니다.Your choice of solution publisher is important in case you want to publish an update to a solution you have shipped. 게시자가 원래 관리 솔루션과 동일한 관리 솔루션에만 업데이트를 적용할 수 있습니다.An update can only be applied to a managed solution with the same publisher as the original managed solution.

자세한 정보: Dynamics 365 Customer Engagement 개발자 가이드: 관리 솔루션 유지 관리 > 관리 솔루션 업데이트 만들기More information: Dynamics 365 Customer Engagement Developer Guide: Maintain managed solutions > Create managed solution updates

솔루션 게시자 및 솔루션 만들기Create a solution publisher and solution

솔루션 게시자 및 솔루션을 만들려면 Dynamics 365 사용자 지정 영역으로 이동해야 합니다.To create a solution publisher and a solution you need to navigate to the Dynamics 365 Customization area.

powerapps.com에서From powerapps.com

  1. 왼쪽 위 모서리에서 와플 아이콘을 선택합니다.Select the Waffle icon at the top left corner
  2. 플라이아웃에서 모든 앱을 선택합니다.In the fly out, select All apps.
  3. Dynamics 365 - 사용자 지정 앱을 찾습니다.Look for the Dynamics 365 - custom app. 줄임표(...)를 클릭하고 이 앱 고정을 선택하면 다음에 좀 더 쉽게 탐색할 수 있습니다.You may want to click the ellipses (...) and choose Pin this app so it will be easier to navigate to next time.
  4. Dynamics 365 - 사용자 지정 앱 앱을 클릭하여 선택합니다.Click the Dynamics 365 - custom app app and select it.
  5. 설정 > 사용자 지정 > 사용자 지정으로 이동합니다.Navigate to Settings > Customization > Customizations.

home.dynamics.com에서From home.dynamics.com

  1. Dynamics 365 - 사용자 지정 타일을 찾아서 클릭합니다.Look for the Dynamics 365 - custom tile and click it.
  2. 설정 > 사용자 지정 > 사용자 지정으로 이동합니다.Navigate to Settings > Customization > Customizations.

솔루션 게시자 만들기Create a solution publisher

  1. 사용자 지정 영역에서 게시자를 선택합니다.From the customizations area, select Publishers.
  2. 새로 만들기를 클릭합니다.Click New.
  3. 게시자 양식에서 표시 이름을 입력합니다.In the publisher form enter a Display Name. 표시 이름에 따라 이름 값이 생성됩니다.A Name value will be generated based on the display name. 생성된 값을 수락해도 되고 새로 만들어도 됩니다.You can accept the generated value or specify a new one.
  4. 접두사 필드에서, 솔루션을 개발할 때 추가하는 사용자 지정 스키마 항목에 붙어야 하는 사용자 지정 접두사를 지정합니다.In the prefix field, specify the customization prefix that should be appended to any custom schema items you add when developing your solution. 기본값은 new입니다.The default value is new. 조직을 잘 나타내고 사람들이 자신의 시스템에 설치된 구성 요소 중 솔루션에서 온 것이 무엇인지 식별하는 데 도움이 될 만한 값을 선택합니다.Choose a value that represents your organization and will help people identify which components installed in their system came from your solution.
  5. 선택하는 사용자 지정 접두사에 따라 옵션 값 접두사 값이 생성됩니다.An Option Value Prefix value will be generated based on your choice for customization prefix. 이 값은 솔루션의 특성에 추가하는 옵션 집합에 대한 모든 값에 추가됩니다.This is a value that will be appended to any values for option set options you add to attributes in your solution. 이 값은 솔루션에 추가하는 옵션을 식별하는 데 도움이 됩니다.This value will help identify any options you add to your solution.
  6. 양식의 연락처 세부 정보 섹션에서, 솔루션을 설치하는 사람들에게 제공할 연락처 정보를 추가할 수 있습니다.In the Contact Details section of the form, you may add any contact information you want to provide for people who install your solution.
  7. 모두 마쳤으면 저장 후 닫기를 클릭합니다.Click Save and Close when you are done.

솔루션 만들기Create a solution

  1. 사용자 지정 영역에서 솔루션을 선택합니다.From the customizations area, select Solutions.
  2. 새로 만들기를 클릭합니다.Click New.
  3. 솔루션 양식에서 표시 이름을 입력합니다.In the solution form enter a Display Name. 표시 이름에 따라 이름 값이 생성됩니다.A Name value will be generated based on the display name. 생성된 값을 수락해도 되고 새로 만들어도 됩니다.You can accept the generated value or specify a new one.
  4. 게시자 필드에서, 솔루션 게시자 만들기에서 만든 게시자를 조회합니다.In the Publisher field look up the publisher you created in Create a solution publisher
  5. 버전 필드에서 솔루션에 적합한 버전(예: 1.0.0.0)을 선택합니다.In the Version field select an appropriate version for your solution, such as 1.0.0.0.
  6. 모두 마쳤으면 저장을 클릭합니다.Click Save when you are done.

중요

이 솔루션에 포함될 새 솔루션 구성 요소를 만들 때 이 솔루션을 사용하거나 동일한 솔루션 게시자에 연결된 다른 솔루션을 사용하여 구성 요소를 추가하세요.Whenever you create a new solution component that will be included in this solution, use this solution, or another solution associated with the same solution publisher to add it. 다른 솔루션 게시자에 연결된 솔루션의 컨텍스트에서 만들어진 솔루션 구성 요소는 이 솔루션에 추가할 수 있지만 설정된 사용자 지정 접두사 값이 일관적이지 않을 수 있습니다.Solution components created in the context of a solution associated to a different solution publisher can be added to this solution, but they may have inconsistent customization prefix values set.

솔루션 레이어Solution layering

서로 모순되는 두 개의 관리 솔루션을 설치하거나 환경에 적용되는 일부 사용자 지정이 관리 솔루션을 재정의할 수 있습니다.It is possible for two managed solutions to be installed which contradict each other or for some customizations applied to the environment to override a managed solution. 이것이 어떻게 가능한가요?How does this work?

Common Data Service for Apps는 설치된 순서에 따라 관리 솔루션을 평가하고 관리 솔루션에 없는 사용자 지정은 마지막에 평가되기 때문에 이것이 가능합니다.It works because Common Data Service for Apps evaluates managed solutions by the order in which they are installed and any customizations that are not in a managed solution are evaluated last.

다음 다이어그램은 관리 솔루션과 비관리 사용자 지정이 서로 상호 작용하여 런타임에 응용 프로그램에 포함할 항목을 제어하는 원리를 보여줍니다.The following diagram introduces how managed solutions and unmanaged customizations interact to control what is included at runtime in the application.

솔루션 레이어를 보여주는 다이어그램

이 예제에서 시스템 솔루션에 정의된 기본 동작은 관리 솔루션에 의해 재정의 또는 추가됩니다.In this example, default behavior defined in the system solution is overridden or appended by managed solutions. 그 후 비관리 사용자 지정이 사용자 지정을 재정의 또는 추가하면 응용 프로그램에 표시됩니다.Any unmanaged customizations can then override or append customizations that are then visible in the application.

자세한 정보: Dynamics 365 Customer Engagement 개발자 가이드: 비관리 및 관리 솔루션More information: Dynamics 365 Customer Engagement Developer Guide: Introduction to solutions > Unmanaged and managed solutions

관리 속성Managed properties

관리 솔루션을 배포할 때 솔루션을 설치하는 사용자는 자신의 비관리 사용자 지정을 솔루션에 포함할 수 있습니다.When you distribute a managed solution, anyone who installs your solution can include their own unmanaged customizations to it. 이러한 비관리 사용자 지정은 솔루션에 종속된 관리 솔루션으로 배포하는 솔루션에 추가할 수 있습니다.Those unmanaged customizations can then be added to a solution that they distributed as a managed solution that depends on your solution. 하지만 사람들이 이렇게 하지 못하게 하려면 어떻게 해야 할까요?But what if you don’t want people to do this? 관리 솔루션의 게시자는 관리 속성을 사용하여 관리 솔루션의 구성 요소에 대한 특정 사용자 지정을 사용하지 않도록 설정할 수 있습니다.As the publisher of the managed solution you can use managed properties to disable specific customizations for the components of your managed solution.

자세한 정보: Dynamics 365 Customer Engagement 개발자 가이드: 관리 속성 사용More information: Dynamics 365 Customer Engagement Developer Guide: Use managed properties

모듈식 솔루션Modular solutions

솔루션 프레임워크를 사용하여 기능 집합을 제공하는 별도의 구성 요소 집합을 만들 수 있습니다.You can use the solution framework to create a discrete set of components that provide a set of functionalities. 각 관리 솔루션을 설치 및 제거하여 고객의 배포를 원래 상태로 되돌릴 수 있습니다.Each managed solution can be installed and uninstalled to return the customer’s deployment to its original state. 개발자가 만드는 각 관리 솔루션은 시스템 솔루션을 기반으로 실행되며 해당 기본 솔루션의 기능에 액세스할 수 있습니다.Each managed solution you create runs on top of the system solution and can access the capabilities of that underlying solution.

다른 솔루션에서 공유할 수 있는 기능 집합을 만드는 다른 솔루션을 기반으로 실행되는 관리 솔루션을 빌드할 수도 있습니다.You can also build managed solutions that run on top of other solutions to create a set of functionalities that can be shared by different solutions. 이 방식에서는 여러 솔루션을 지원하기 위한 솔루션으로 공통 모듈을 빌드하여 유지할 수 있습니다.In this way, you can build and maintain a common module as a solution to support multiple solutions. 따라서 고객은 자신에게 적합한 솔루션을 설치하기만 하면 되고 개발자는 모든 솔루션에 동일한 공유 기능을 포함할 필요가 없습니다.Because of this, customers only need to install the solutions that are right for them and you don’t need to include the same shared functionality in every solution. 여러 솔루션을 지원하는 솔루션에 업데이트를 푸시하려는 경우 공통 모듈을 업데이트하기만 하면 됩니다.If you need to push out an update to solution that supports multiple solutions, you only need to update the common module.

그 후 고객, 시스템 구현자 및 기타 ISV는 해당 솔루션을 기반으로 필요한 특정 사용자 지정을 수행하는 솔루션을 구현할 수 있습니다.Customers, System Implementers, and other ISVs can then build solutions on top of your solutions to achieve the specific customizations they require.

비즈니스 기능 집합이 여러 솔루션으로 구성된 경우 패키지라고 부릅니다.When a set of business functionality is composed with multiple solutions, these are called packages. 패키지 배포자를 사용하여 여러 솔루션을 설치 가능한 단일 단위로 결합할 수 있습니다.You can use the Package Deployer to combine multiple solutions into a single installable unit.

솔루션 패키지 배포Deploy solution packages

패키지 배포자를 사용하여 다음을 포함할 수 있는 패키지용 사용자 지정 설치 관리자를 만들 수 있습니다.Use the Package Deployer to create a custom installer for a package that can include

  • 하나 이상의 솔루션 파일.One or more solution files.
  • 플랫 파일 또는 내보낸 구성 데이터 파일.Flat files or exported configuration data files.
  • 패키지 배포 전, 도중 또는 후에 실행할 수 있는 사용자 지정 코드.Custom code that can run before, while, or after the package is deployed.
  • 배포 프로세스의 시작과 끝에 표시할 수 있는 패키지 관련 HTML 콘텐츠.HTML content specific to the package that can display at the beginning and end of the deployment process. 패키지에 배포되는 솔루션 및 파일에 대한 설명을 제공할 때 유용할 수 있습니다.This can be useful to provide a description of the solutions and files that are deployed in the package.

자세한 정보: Dynamics 365 Customer Engagement 개발자 가이드: Dynamics 365 패키지 배포자용 패키지 만들기.More information: Dynamics 365 Customer Engagement Developer Guide: Create packages for the Dynamics 365 Package Deployer.

솔루션 팀 개발Team development of solutions

솔루션 파일은 소스 코드 제어 또는 팀 개발에 자신을 제공하지 않는 단일 이진 파일입니다.A solution file is a single binary file that does not lend itself to source code control or team development. 여러 개발자가 솔루션의 사용자 지정 구성 요소를 작업하는 방법은 없습니다.There is no way for multiple developers to work on the custom components in the solution.

SolutionPackager 도구는 솔루션 파일의 소스 코드 제어 및 팀 개발 문제를 해결합니다.The SolutionPackager tool resolves the problem of source code control and team development of solution files. 이 도구는 압축된 솔루션 파일의 개별 구성 요소를 식별하여 개별 파일로 추출합니다.The tool identifies individual components in the compressed solution file and extracts them out to individual files. 이전에 추출된 파일을 압축하여 솔루션을 다시 만들 수도 있습니다.The tool can also re-create a solution file by packing the files that had been previously extracted. 이렇게 하면 여러 사람들이 단일 솔루션에서 독립적으로 작업하고 자신의 변경 내용을 공통 위치로 추출할 수 있습니다.This enables multiple people to work independently on a single solution and extract their changes into a common location. 솔루션 파일의 각 구성 요소가 여러 파일로 나뉘어지므로 이전 변경 내용을 덮어쓰지 않고 사용자 지정 항목을 병합할 수 있습니다.Because each component in the solution file is broken into multiple files, it becomes possible to merge customizations without overwriting prior changes. SolutionPackager 도구의 두 번째 사용법은 자동화된 빌드 프로세스에서 호출하여 활성 Dynamics 365 인스턴스 없이 이전에 추출된 구성 요소 파일에서 압축된 솔루션 파일을 생성하는 것입니다.A secondary use of the SolutionPackager tool is that it can be invoked from an automated build process to generate a compressed solution file from previously extracted component files without needing an active Dynamics 365 instance.

자세한 정보: Dynamics 365 Customer Engagement 개발자 가이드: 팁 개발을 위한 솔루션 도구More information: Dynamics 365 Customer Engagement Developer Guide: Solution tools for team development

참고 항목See also

Common Data Service for Apps 개발자 개요Common Data Service for Apps Developer Overview