SharpDevelop开发教程(一)
前 言
最近在网上有很多关于SharpDevelop代码分析的文章,但对SharpDevelop插件和核心服务开发的文章确很少。这份文档我想应该会对大家有帮助。为了不浪费大家的时间和网络流量,我不打算给大家讲SharpDevelop的基本概念和内部的代码分析。各位可以参阅清华大学出版的一本红皮书《C#软件项目开发全程剖析-全面透视SharpDevelop软件的开发内幕》(我真的不是清华的书托J),虽然翻译的一般、但有总比没有的好,各位也可以参阅博客园(www.cnblogs.com)另外几位的文章,其中古月春秋的《SharpDevelop代码分析》系列是个人认为写的很不错的,很见作者的功底。(题外话:古月春秋的文章中提到了对codon的翻译的问题,英文中电子、中子、光子、质子分别译为electron、 neutron、photon、proton,此处大家会对-on后缀发出会心的微笑。Codon翻译成“代码子”意思应该是很到位的,清华那本书中的“密码子”就逊色些了,但也还将就。)
这文章大家可以任意阅读转载,但请保持文档的完整转载。由于在工作的中午休息期间所写,十分匆忙,难免有勿,请各位斧正。
为了方便起见,我在文章中都把SharpDevelop简称为SD。
<?xml:namespace prefix = o />
第一章 Pad
Pad(面板)就是SD中的停靠窗口。有这些特点:Pad不能关闭,但可以隐藏或显示。每种类型的Pad只能打开一个,不能在运行时添加,标题唯一。可以显示图标,由SD中的布局管理器负责管理。通常不显示文件内容,而是辅助用户完成任务。
下面进入我们的实战流程,先新建一个类库型的项目,命名为CSPadDemoPlug,把Class1.cs改名为Main.cs,修改为如下内容:
2using System.Drawing;
3using System.Windows.Forms;
4
5using ICSharpCode.SharpDevelop.Gui;
6
7namespace SDPadDemoPlug
8{
9 public class SDPad : AbstractPadContent
10 {
11 SDPadControl control=new SDPadControl();
12 public SDPad(): base("TestPanel")
13 {
14 }
15
16 public override Control Control
17 {
18 get
19 {
20 return this.control;
21 }
22 }
23
24 }
25}
26
记得要在项目中加入SD中的ICSharpCode.Core.dll和SharpDevelop.Base.dll引用。这两个文件在SD下的Bin目录下。写SD的插件需要包含。
在项目中添加新建项à用户控件。改名为CSPadControl。各位可以在CSPadControl上添加一些相关的内容。
在工程中添加一个DemoPlug.addin文件,这是插件配置文件,很重要,内容如下:
author = "SongYuanWu"
copyright = "GPL"
url = "http://www.cnblogs.com/CBuilder"
description = "SharpDevelop "
version = "1.0.0">
<Runtime>
<Import assembly="SDPadDemo.dll"/>
</Runtime>
<Extension path = "/SharpDevelop/Workbench/Views">
<Class id = "SDPadDemo"
class = "SDPadDemoPlug.SDPad"/>
</Extension>
</AddIn>
OK!把编译后的SDPadDemo.dll和DemoPlug.addin文件拷贝到SD的\AddIns\目录下,运行SD就可以看到我们创建的Pad了(如下图),同时在SD的菜单【查看】-【工具】下也出现了TestPanel菜单项。
<?xml:namespace prefix = v />
如果需要指定pad的图标时,可以改更改base("TestPanel")为 base("TestPanel", "IconID")。
InconID为图标的资源号,作为演示你可以用Class的图标“Icons.16x16.Class”来替代。
要点分析:
制作Pad的时候要从AbstractPadContent继承。所以要using ICSharpCode.SharpDevelop.Gui;
.addin文件中不要用中文,否则会出现错误,那如果需要用到中文怎么办呢?可以使用SD的字符串分析服务,把字符串改为如下形式${res:StringID},StringID是SD中的资源ID,SD的ResourceService的使用,我将会在后面的内容中讲述。
转载于:https://www.cnblogs.com/CBuilder/archive/2005/08/06/209046.html
SharpDevelop开发教程(一)相关推荐
- 【转载】SharpDevelop开发教程
[原文地址]http://www.cnblogs.com/cbuilder/archive/2005/08/06/209046.html 前 言 最近在网上有很多关于SharpDevelop代码分析的 ...
- Android WiFi开发教程(三)——WiFi热点数据传输
在上一篇文章中介绍了WiFi的搜索和连接,如果你还没阅读过,建议先阅读上一篇Android WiFi开发教程(二)--WiFi的搜索和连接.本篇接着简单介绍手机上如何通过WiFi热点进行数据传输. 跟 ...
- Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...
<Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...
- .Net魔法堂:史上最全的ActiveX开发教程——发布篇
一. 前言 接着上一篇<.Net魔法堂:史上最全的ActiveX开发教程--开发篇>,本篇讲述如何发布我们的ActiveX. 二.废话少讲,马上看步骤! 1. 打包 C#开发的Activ ...
- 做了一个系列的Android开发教程列表
做了一个系列的Android开发教程列表.花了半天多的专题 里面包含了 4个系列的教程. 也包含了很多Android开发资料. 喜欢的人可以收藏哦:http://dev.apkbus.com/
- react开发教程(十)redux结合react
描述 Redux 和 React 之间没有关系.Redux 可以搭配 React.Angular 甚至纯 JS.但是 Redux 还是比较适合和 React 搭配的,因为 React 允许你以 sta ...
- boost.asio包装类st_asio_wrapper开发教程(2014.5.23更新)(一)-----转
一:什么是st_asio_wrapper 它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统: 二:st_asio_ ...
- 《C# WinForM 实践开发教程》案例×××(2)
<C# WinForM 实践开发教程>案例×××(2): 由于上传限制,必须分卷压缩,请依次下载后解压缩.共有20个文件,合计71.3M. 请耐心下载哦^o^ 转载于:https://bl ...
- C#开发教程初级-第一天-hello Word 控制台编程
为什么80%的码农都做不了架构师?>>> C#开发教程第一天,hello word的编程! using System; using System.Collections.Gen ...
最新文章
- mysql压缩表语句_MYSQL静态表、动态表、压缩表总结
- 输出联系变化的数字seq
- 阿里云docker hub
- python设置一个初始为0的计数器_python中统计计数的几种方法
- Python测试开发django3.视图和URL配置
- 为什么同样是200M宽带,移动可以不要钱,联通却要1000多?
- DateTime 操作详解
- 大学英语综合教程四 Unit 5 课文内容英译中 中英翻译
- 现场总线课程设计——IIC总线
- 区块链马拉松|Blockathon(2018)上海站开放报名(HiBlock)
- 2020最新天猫双十一自动获取喵币
- OUTLOOK无法打开
- 悲催呀,辞职后,竟然找不到工作了
- Kivy App开发之页面背景设置
- java控制台实现的简易计算器,实现加减乘除
- 原生JS-实现无限图片轮播
- 生活随记 - 祝福大家2021年新年快乐
- 微信小程序的wxml、wxss、js、json的理解
- hdu 4541 Ten Googol
- android原生见缝插针游戏自定义控件源码