2013-03-30 74 views
0

我开发的应用程序使用加载项与System.AddIn提供的.NET加载项功能。我的主机应用程序以及加载项共享WPF嵌入字体和XAML图标等一些资源。我想避免包括他们在主机和加载项。有没有什么办法可以在没有太多复杂性的情况下实现呢在.NET加载项和主机之间共享资源

我的应用程序已经由7个部分组成:主机,主机端视图,主机端适配器,合同,附加端适配器,附加端视图以及最终加载项。我看到的问题是,在主机加载插件程序集时,加载项无法访问位于主机程序集中的资源。

加载项提供主机消耗的服务。我希望我的主机提供加载项消耗的资源。

一个可能的解决方案是引入另一个包含所有资源的程序集,这些资源可以被主机和加载项访问。这个解决方案的积极/消极方面是什么?喜欢,当不是合约时,插件可以依赖这个程序集的存在吗?

回答

0

您也可以通过为主机添加合同来将主机展示给加载项。然后,加载项将能够请求主机可以提供的资源。请看System.AddIn团队的Basic Automation Object Model样本。在那里您会找到IHostObjectContract,它是主机的合同,并在初始化期间提供给每个加载项(IAutomationAddInContract.Initialize)。

使用共享程序集的另一种方法也是可行的。请记住,System.AddIn不只是一个图书馆。如果你不遵守他们的准则,你可能会失去一些功能。通常第一件事就是版本控制。通过添加共享程序集,您将有可能失去版本控制。如果你能忍受它,或者如果你确信共享程序集的公共类型永远不会改变,那就去做吧。