关于osgi.net 的使用网上也有不少的资料,最近在使用osgi.net  开发插件的时候,遇到了这样的bug,造成插件甚至整个项目都无法启动,异常的具体消息如下:

  Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "UIShell.iOpenWorks.WinForm.Properties.Resources.resources" was correctly embedded or linked into assembly "ConfigFileConvert" at compile time, or that all the satellite assemblies required are loadable and fully signed.

  在网上查了很多资料也没能解决,最后发现,是扩展点的名称写错了。为了避免以后犯同样的错误,同时也方便其它开发人员参考,就有了这篇博客。废话不多说,具体解决方法如下:

1.在Mainfest.xml 文件中,Extension 节点中的 Point 属性,要正确的赋值。

<Extension Point="UIShell.Applications">
<Application Title="Wisdo Demon" ToolTip="Wisdo Demon" Icon="ConfigFileConvert.SvgPlugin.Resources.Conversion128.png.png.png.png">
<Menu Text="Wisdo Demon" ToolTip="Wisdo Demon" Icon="ConfigFileConvert.SvgPlugin.Resources.OneFileConvert.png.png.png" Class="ConfigFileConvert.SvgPlugin.SvgControl" />
</Application>
</Extension>
<Extension Point="PageFlowService.PageNode">
<PageNode Name="AppCenterPage" Priority="" Value="ConfigFileConvert.SvgPlugin.SvgControl" />
</Extension>
<Extension Point="UIShell.BundleManagementOptions">
<BundleManagementOption AllowToStarted="true" AllowToStopped="false" AllowToUninstalled="false" />
</Extension>

  其中Point 的属性值,不是随便定义的,它是预先定义好的,也就是说,它一定存在于另一个插件中,该插件向外公开自己的扩展点,并定义了对该扩展点进行监听的事件,如果某个插件扩展了该扩展点(或引用了该扩展点),那么定义扩展点的插件就会对扩展了该扩展点的插件自动监听,这也是OSG.NET  的特点。插件在定义扩展点的时候,使用的是 ExtensionPoint 节点,其中有Point属性,提供给其它插件进行扩展,而在扩展插件中,使用 Extension 来扩展一个定义好的扩展点,Point 属性值 就是所谓的扩展点名字(ExtensionPoint 节点中的Point属性值 )。

关于扩展点的定义如下:

  <ExtensionPoint Point="PageFlowService.PageFlow" />
<ExtensionPoint Point="PageFlowService.PageNode" />

  

2. 查看日志文件来定位异常

  OSGI.NET 框架都有运行日志记录的,如果遇到了异常或插件无法启动,这时可以查看日志文件来准确定位

3 . 相关资料

  UIOSP 官网:http://www.iopenworks.com/

  OSGI.NET 官网:http://osgi.codeplex.com/

OSGI.NET 插件无法启动之情景一的更多相关文章

  1. 分享在Linux下使用OSGi.NET插件框架快速实现一个分布式服务集群的方法

    在这篇文章我分享了如何使用分层与模块化的方法来设计一个分布式服务集群.这个分布式服务集群是基于DynamicProxy.WCF和OSGi.NET插件框架实现的.我将从设计思路.目标和实现三方面来描述. ...

  2. word插件开发 运行时,插件不启动.

      word插件开发 运行时,插件不启动. 查看插件信息时. 在禁用的应用程序加载项中.   启动禁用的插件: 点击转到.  选择你要启动的插件就可以了.

  3. Jboot使用appassembler-maven-plugin插件生成启动脚本

    appassembler-maven-plugin介绍: 使用appassembler-maven-plugin插件可自动生成跨平台的启动脚本,可省去手工写脚本的麻烦,而且还可以生成jsw的后台运行程 ...

  4. OSGI.NET插件方式开发你的应用

    之前一直从事C# WEB开发.基本都是业务开发,性能优化. 体力活占比90%吧.模块真的很多很多,每次部署经常出先各种问题.发布经常加班. 今年开始接触winform 开发.发现C# 的事件  委托 ...

  5. 使用`html-webpack-plugin`插件配置启动页面

    由于使用`--contentBase`指令的过程比较繁琐,需要指定启动的目录,同时还需要修改index.html中script标签的src属性,所以推荐大家使用`html-webpack-plugin ...

  6. OSGI.NET 插件启动方法

    在使用OSGI.NET框架来开发插件过程中,有时为了测试一个插件,或运行一个插件,需要启动主个插件,如果没有主窗口程序,那么该 如何启动一个插件,而不是再开发一个主窗口程序(那样是不是太麻烦,仅仅是为 ...

  7. phonegap android插件,启动activity并返回值

    Your execute menthod is not quite right. When you do: return new PluginResult(PluginResult.Status.OK ...

  8. 使用appassembler插件生成启动脚本

    appassemblermaven插件可以自动生成跨平台的启动脚本,省去了手工写脚本的麻烦,而且还可以生成jsw的后台运行程序.插件官网:http://www.mojohaus.org/appasse ...

  9. idea下载多个插件项目启动不了解决方案

    今天下载mybatis plugin插件的时候 有好多个版本的plugin,然后呢,看第二个比较热门,就下载了第二个,然后重启idea发现这个插件貌似得花钱,那算了吧,咱用第一个免费的吧,就又下载了第 ...

随机推荐

  1. nginx的https配置

    测试自签名的ssl证书 首先执行如下命令生成一个key openssl genrsa -des3 - 然后他会要求你输入这个key文件的密码.不推荐输入.因为以后要给nginx使用.每次reload ...

  2. 236. Lowest Common Ancestor of a Binary Tree

    Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...

  3. capture同focus

    SetCapture函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获.一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内.同一时刻只能有一个窗口捕获鼠标.如果鼠标光标在另一 ...

  4. USACO CHAPTER 1 1.1 Ride 水题

    水题,主要是学习文件输入输出. /* ID: ijustwa1 LANG: C++ TASK: ride */ #include<cstdio> #include<cstring&g ...

  5. 停止某个机房所有机器上包的脚本 pack_idc_stop.py

    一.初衷: 鉴于公司的进程包package都是冗余多点部署的,一般一个idc机房有多台机器部署同一个package.当机房网络出问题的时候,我们不得不查到本机房部署了哪些package,并在包发布系统 ...

  6. hadoop对于压缩文件的支持及算法优缺点

    hadoop对于压缩文件的支持及算法优缺点   hadoop对于压缩格式的是透明识别,我们的MapReduce任务的执行是透明的,hadoop能够自动为我们 将压缩的文件解压,而不用我们去关心. 如果 ...

  7. 帝国CMS 6.0功能解密之新版结合项功能,帝国结合项使用

    可以用来做A-Z信息检索    某字段等于多少,输出  等等 帝国CMS6.0在继承以往版本结合项功能的基础上又新增很多特性,更强大.今天我们就专门来讲解6.0的结合项改进. 回顾下以往版本的结合项语 ...

  8. 防止sql注入。xss攻击 方法

    //防止sql注入.xss攻击    /**     * 过滤参数     * @param string $str 接受的参数     * @return string     */    publ ...

  9. SQL Server 2005 不允许远程连接解决方法

    刚刚安装的数据库系统,按照默认安装的话,很可能在进行远程连接时报错,通常是错误:“在连接到 SQL Server 2005 时,在默认的设 置下 SQL Server 不允许进行远程连接可能会导致此失 ...

  10. JAVA 中关于String的特性

    一.初始化String的两种方式 String str1 = "hello"; String str2 = new String("hello"); 第一种方式 ...