2013-03-30 6 views
0

내가 개발 한 응용 프로그램은 System.AddIn이 제공하는 .NET 추가 기능을 사용하여 추가 기능을 사용합니다. 내 호스트 응용 프로그램과 추가 기능 은 WPF 포함 글꼴 및 XAML 아이콘과 같은 일부 리소스을 공유합니다. 호스트 및 추가 기능에 포함하지 않기를 바랍니다.. 너무 복잡하지 않고 이것을 달성 할 수있는 방법이 있습니까?.NET 추가 기능과 호스트간에 리소스 공유

내 응용 프로그램은 호스트, 호스트 쪽보기, 호스트 쪽 어댑터, 계약서, 추가 기능 쪽 어댑터, 추가 기능보기 및 마지막으로 추가 기능의 7 부분으로 구성되어 있습니다. 내가 볼 수있는 문제는 호스트가 추가 기능 어셈블리를로드하는 동안 추가 기능이 호스트 어셈블리에있는 리소스에 액세스하는 것이 불가능하다는 것입니다.

추가 기능은 호스트에서 사용하는 서비스를 제공합니다. 내 호스트가 추가 기능에서 사용하는 리소스를 제공하기를 원합니다.

가능한 해결 방법은 호스트와 추가 기능에서 모두 액세스하는 모든 리소스를 포함하는 다른 어셈블리를 소개하는 것입니다. 이 솔루션의 긍정적/부정적 측면은 무엇입니까? 마찬가지로 추가 기능은 계약이 아닐 때이 어셈블리의 존재에 의존 할 수 있습니까?

답변

0

호스트에 대한 계약을 추가하여 추가 기능에 호스트를 노출 할 수 있습니다. 그런 다음 추가 기능은 호스트가 제공 할 수있는 리소스를 요청할 수 있습니다. System.AddIn 팀의 Basic Automation Object Model 샘플을 확인하십시오. 여기서 호스트에 대한 계약 인 IHostObjectContract을 찾고 초기화 중 각 추가 기능에 제공됩니다 (IAutomationAddInContract.Initialize).

공유 어셈블리를 사용하는 다른 방법도 가능합니다. 하지만 System.AddIn은 (는) 도서관이 아닙니다. 지침을 따르지 않으면 일부 기능이 손실 될 수 있습니다. 일반적으로 가장 먼저 잃는 것은 버전 관리입니다. 공유 어셈블리를 추가하면 버전 관리가 손실 될 위험이 있습니다. 함께 살 수 있거나 공유 어셈블리의 공용 형식이 변경되지 않는다는 것이 확실한 경우에는이를 수행하십시오.