给VS写个扩展来听音乐的说法,缘来已久,这两天做了个初版,使用豆瓣FM,先发出来。
插件现在只做了VS2013的,别的版本有待下一步支持。
现在暂时只有一个Adornment(就是那个有封面的),一个Margin(编辑器最下面,准备用来放歌词,没有做),一个Menu(最上面的菜单),一个ToolBar(工具栏啊,就那个提示播放的)。
只完成了播放功能,切换频道准备明天做,登录功能也要后续完善。
关于豆瓣FM的WPF程序,做过的人也不少,这里对两个项目有所参考并继续参考,在这里列出:烟灰灰 和 kfstorm
现在比较反感DI、IoC,但是不知不觉又用了。
其实做这种VS扩展很简单,和扩展有关的东西很少,应用程序应该怎么做,这里就怎么做,只不过写的程序不是运行主体罢了。
但是后续要做的还不少,首先Adornment这个东西,不应该在每个TextView中包含一个,也就是说应该一个VS只有这一个出现,所以这里不应该使用IWpfTextViewCreationListener接口。
话又说回来,扩展是对于VS扩展的,同时打开几个VS很常见,得想想办法怎么做成统一控制之类的,用remoting什么的。
还需要一个Tool Window做主界面,需要Options Page,还要在快速启动(Ctrl + Q)那里弄个搜索歌曲,加上歌词、用户、快捷键支持等,后续可能还会增加播放本地音乐等功能,想想也有不少。
又说回MEF,在原来VSX项目中我又自己维护了一个IoC容器,但是VS扩展本来就是使用MEF,翻看了不少项目,终于找到如下代码片段:
var componentModel = (IComponentModel)_serviceProvider.GetService(typeof(SComponentModel)); var player = componentModel.DefaultExportProvider.GetExportedValue<IPlayer>();
其中_serviceProvider就是IServiceProvider接口对象,VSX中最常见的Package就是一个IServiceProvider。
当然,在使用Export导出的类,也就是MEF组件中,是直接可以使用Import特征来注入的。
这个项目不会花费我太多功夫,只是兴趣所致。希望同样有兴趣的人可以继续做下去。