在.NET加载项和主机之间共享资源
我开发的应用程序使用带有在.NET加载项和主机之间共享资源,.net,add-in,.net-assembly,maf,system.addin,.net,Add In,.net Assembly,Maf,System.addin,我开发的应用程序使用带有System.AddIn提供的.NET加载项功能的加载项。我的主机应用程序以及加载项共享一些资源,如WPF嵌入式字体和XAML图标。我希望避免将它们同时包含在主机和加载项中。有没有什么方法可以在不太复杂的情况下实现这一点 我的应用程序已经由7部分组成:主机、主机端视图、主机端适配器、契约、外接程序端适配器、外接程序端视图,最后是外接程序。我看到的问题是,当主机加载外接程序集时,外接程序不可能访问位于主机程序集中的资源 外接程序提供主机使用的服务。我希望我的主机提供外接程序
System.AddIn
提供的.NET加载项功能的加载项。我的主机应用程序以及加载项共享一些资源,如WPF嵌入式字体和XAML图标。我希望避免将它们同时包含在主机和加载项中。有没有什么方法可以在不太复杂的情况下实现这一点
我的应用程序已经由7部分组成:主机、主机端视图、主机端适配器、契约、外接程序端适配器、外接程序端视图,最后是外接程序。我看到的问题是,当主机加载外接程序集时,外接程序不可能访问位于主机程序集中的资源
外接程序提供主机使用的服务。我希望我的主机提供外接程序使用的资源
一个可能的解决方案是引入另一个包含所有资源的程序集,主机和外接程序都可以访问该程序集。此解决方案的积极/消极方面是什么?例如,当外接程序不是协定时,它能否依赖于此程序集的存在?您也可以通过为主机添加协定向外接程序公开主机。然后外接程序将能够请求主机可以提供的资源。查看
系统中的示例。AddIn
团队。您将在那里找到IHostObjectContract
,它是主机的契约,在初始化期间提供给每个加载项(IAutomationAddInContract.Initialize
)
使用共享程序集的另一种方法也是可能的。请记住,System.AddIn
不仅仅是一个库。如果你不遵循他们的指导方针,你可能会失去一些功能。通常第一件丢失的事情是版本控制。通过添加共享程序集,您将面临失去版本控制的风险。如果您可以接受它,或者如果您确信共享程序集的公共类型永远不会改变,那么就使用它