추가 기능 검색
호스트 응용 프로그램이 해당 응용 프로그램에서 사용할 수 있는 추가 기능을 검색할 수 있습니다. 검색은 다음과 같은 두 가지 작업으로 구성되어 있습니다.
모든 추가 기능 및 파이프라인 세그먼트에 대한 정보를 캐시 파일에 등록
캐시를 검색하여 추가 기능의 지정된 호스트 뷰에 대해 추가 기능 찾기
일반적으로 호스트는 응용 프로그램에 따라 시작할 때, 문서가 로드될 때 또는 사용자가 요청할 때 추가 기능을 검색합니다. AddInStore 클래스는 이러한 작업을 수행하는 메서드를 제공합니다.
추가 기능을 검색한 후에는 추가 기능 활성화 및 방법: 다양한 격리 및 보안 수준으로 추가 기능 활성화의 설명에 따라 이를 활성화할 수 있습니다.
추가 기능 및 파이프라인 세그먼트 등록
추가 기능과 파이프라인 세그먼트를 등록하려면 파이프라인 세그먼트의 특성을 검토하고 파이프라인에 대한 정보를 생성하여 유효한 추가 기능을 확인해야 합니다. 파이프라인 세그먼트에 특성을 적용하고 파이프라인 디렉터리 구조를 만드는 방법에 대한 자세한 내용은 파이프라인 개발 요구 사항을 참조하십시오. 파이프라인 디렉터리 구조에는 하나 이상의 파이프라인이 포함될 수 있습니다. 이 정보는 파이프라인 루트 디렉터리에서 PipelineSegments.store와 AddIns.store라는 두 개의 파일에 캐시됩니다.
등록에 사용되는 메서드는 파이프라인 루트 경로를 나타내는 문자열 변수 또는 PipelineStoreLocation 열거형의 값을 받습니다. 위의 두 파일이 미리 만들어져 있지 않은 경우 새 캐시 파일을 만듭니다.
메서드는 다음 표의 설명에 따라 캐시 파일을 다시 빌드하거나 업데이트합니다.
등록 메서드 |
설명 |
---|---|
파이프라인 세그먼트 캐시를 다시 빌드하고 새 추가 기능을 포함합니다. 또한 이 메서드는 추가 기능이 파이프라인 디렉터리 구조 내부에 있는 경우 추가 기능 캐시를 다시 빌드합니다. |
|
지정된 위치에서 추가 기능에 대해 추가 기능 캐시를 다시 빌드합니다. 이 메서드는 해당 추가 기능이 파이프라인 디렉터리 구조 외부에 있는 경우에 호출합니다. |
|
파이프라인 세그먼트 캐시를 추가 기능으로 업데이트합니다. 또한 이 메서드는 추가 기능이 파이프라인 디렉터리 구조 내부에 있는 경우 추가 기능 캐시를 업데이트합니다. 새 파이프라인 세그먼트나 추가 기능이 없는 경우 이 메서드는 캐시의 유효성만 검사합니다. |
|
지정된 위치에서 새 추가 기능에 대해 추가 기능 캐시를 업데이트합니다. 이 메서드는 해당 추가 기능이 파이프라인 디렉터리 구조 외부에 있는 경우에 호출합니다. 새 추가 기능이 설치되어 있지 않은 경우 이 메서드는 캐시의 유효성만 검사합니다. |
Rebuild 및 Update 메서드 오버로드는 파이프라인 디렉터리 구조의 루트 디렉터리나 PipelineStoreLocation 열거형의 값을 매개 변수로 사용합니다.
이러한 메서드에서는 리플렉션 전용 로드를 통해 정보를 얻으며 추가 기능의 코드나 파이프라인 세그먼트의 코드는 실행하지 않습니다. 캐시된 정보는 업데이트 시 다시 계산되지 않도록 타임스탬프가 기록됩니다.
캐시 파일
등록 메서드를 호출하면 다음과 같은 두 개의 캐시 파일이 생성됩니다.
PipelineSegments.store
이 파일은 파이프라인 디렉터리 구조의 루트 디렉터리에 있습니다.
AddIns.store
이 파일은 하나 이상의 추가 기능 하위 디렉터리를 포함하는 디렉터리에 있습니다. 이 디렉터리는 파이프라인 디렉터리 구조 내에 있을 수도 있고 다른 위치에 있을 수도 있습니다.
추가 기능 찾기
FindAddIns 메서드는 이러한 store 파일을 검사하여 추가 기능의 지정된 호스트 뷰와 일치하는 모든 추가 기능을 찾습니다. 추가 기능의 호스트 뷰는 계약에 지정된 대로 호스트 및 추가 기능에서 사용되는 메서드를 설명하는 추상 기본 클래스 또는 인터페이스입니다. 이 메서드는 등록 메서드를 통해 만들어지는 캐시 파일을 찾기 위해 파이프라인 디렉터리 구조의 루트 디렉터리나 PipelineStoreLocation 열거형의 값을 매개 변수로 사용합니다.
참고 |
---|
FindAddIns는 사용 가능한 모든 추가 기능을 찾을 수 있도록 store 파일이 빌드 및 업데이트된 후에만 호출해야 합니다. |
FindAddIns 메서드는 유효한 파이프라인이 포함된 사용 가능한 각 추가 기능을 설명하는 토큰의 IList<T> 컬렉션을 반환합니다. 각 토큰은 AddInToken 클래스로 설명됩니다.
각 토큰에는 다음과 같은 추가 기능에 대한 정보가 들어 있으며, 이 정보는 해당 추가 기능 클래스의 AddInAttribute 특성에서 얻을 수 있습니다.
Name
설명
게시자
버전
대개의 경우 IList<T> 컬렉션에는 토큰이 하나만 들어 있습니다. 토큰이 둘 이상인 경우 호스트 응용 프로그램에서는 이 정보를 사용하여 사용자가 활성화할 추가 기능을 선택하는 과정을 지원할 수 있습니다. 활성화에 대한 자세한 내용은 추가 기능 활성화를 참조하십시오.
파이프라인 디렉터리 구조 외부에 있는 추가 기능을 찾으려면 AddInPaths 매개 변수를 포함해야 합니다. 이 매개 변수는 문자열 배열이기 때문에 여러 위치를 지정할 수 있습니다.
또한 하나의 토큰으로 구성된 컬렉션을 반환하는 FindAddIn 메서드를 사용하여 특정 추가 기능을 찾을 수도 있습니다.
예제
다음 예제에서는 캐시 파일을 빌드하고 추가 기능을 찾는 방법을 보여 줍니다.
' Get the path for the pipeline root.
' Assumes that the current directory is the
' pipline directory structure root directory.
Dim pipeRoot As String = Environment.CurrentDirectory
' Update the cache files of the
' pipeline segments and add-ins.
Dim warnings() As String = AddInStore.Update(pipeRoot)
For Each warning As String In warnings
Console.WriteLine(warning)
Next
' Search for add-ins of type Calculator (the host view of the add-in)
' specifying the host's application base, instead of a path,
' for the FindAddIns method.
Dim tokens As Collection(Of AddInToken) = _
AddInStore.FindAddIns(GetType(Calculator), PipelineStoreLocation.ApplicationBase)
// Get path for the pipeline root.
// Assumes that the current directory is the
// pipeline directory structure root directory.
String pipeRoot = Environment.CurrentDirectory;
// Update the cache files of the
// pipeline segments and add-ins.
string[] warnings = AddInStore.Update(pipeRoot);
foreach (string warning in warnings)
{
Console.WriteLine(warning);
}
// Search for add-ins of type Calculator (the host view of the add-in)
// specifying the host's application base, instead of a path,
// for the FindAddIns method.
Collection<AddInToken> tokens =
AddInStore.FindAddIns(typeof(Calculator),PipelineStoreLocation.ApplicationBase);