SharpDevelop学习笔记(6)—— AddIn构建指南

it2022-05-05  173

SharpDevelop学习笔记(6)—— AddIn构建指南 1 关于 AddIn 构建指南 本文也许可以作为遵照构建计划编写 develop 但并不讲述如何去扩展 SharpDevelop 2 文件结构 每个 addin 应该在 src\ 文件夹里的某处有一个自己的目录 . 它应该提供一个用于建立或清除项目的项目计划文件。 您的 AddIn 拥有自己的目录 , 并且根文件夹包含一个解答文件。 在根文件夹里面,可以有二个次目录 : 项目和测试。 项目 Addin 本身 ,‘ 测试 是一套给 AddIn 的单位测试 ( 单位测试源文件和项目文件 ) 项目 目录包含以下次目录和文件: 名字 内容 描述 项目名 . csproj MSBuild 文件 addin 的项目文件 项目名 .addin AddIn 定义文件 Contains XML 树的 xml 代码 . 应该用 'CopyToOutputDirectory'. Src\ 源代码文件 这是给你的 add-in 的源代码 Resources\ 任何类型的文件 这是编写进 add-in 集合的所有源 Doc\ 文件 ( 不用 *.doc 格式 ; 如果需要的话要用 .txt 或者 .html) 这里可能会把文件放在 add-in RequiredLibraries\ ( 必需的目录 ) *.dll 文件 Add-in 在二进制下运用这些目录 3 设定项目 您可以用 SharpDevelop AddIn” 模板创建一个测试 addin 项目。 注意 , 它不会编写到盒子外面,只以文件的形式给您一个目录结构以让您的启动稍快一些 . 做这件事的第一步是要设立项目属性 . 3.1 项目属性 SharpDevelop/AddIns/AddIns 里面 设置到达次文件夹的项目输出路径。如果您的 AddIn 没有跟 SharpDevelop 分布在一起 , 那就把它放在位于 SharpDevelop/AddIns/3rdparty 之中的次文件夹 . 模板没有为你做的事情会在 SharpDevelop 的参考里面涉及。您会需要一个有关 ICSharpCode.Core.dll ICSharpCode.SharpDevelop.dll. 的参考说明 . 在这两个参考上设置 拷贝参考到输出路径 是错误的 . 3.2  .addin 文件 3.2 .addin 文件 .addin 文件是您 addin 里最重要的文件。您能指定您的 add-in 将在 SharpDevelop 的什么部分进行扩展 . 当首次使用它的时候您的当前 addin 目录便被加载了 . 当您使用模板创建新的一个新的 AddIn 时,以下文件便已经生成了: <AddIn name = "MyAddInName" author = "username" copyright = "GNU General Public License" url = "" description = "TODO: Put description here" > <Runtime> <Import assembly = "MyAddInName.dll" /> </Runtime> <Path name = "/SharpDevelop/Workbench/Pads" > <Pad id = "MyAddInNamePad" category = "Main" title = "MyAddInNamePad" icon = "PadIcons.NUnitTest" shortcut = "Control|Alt|T" class = "MyAddInName.TestPad" /> </Path> </AddIn> 这是在展示 .addin 文件如何运行: <Runtime> 部分 描述通过 Addin 使用了什么集合 . 随后是许多的扩展路径 . 这样,您就能向 AddInTree 里插入元素了。 MyAddInName.TestPad 是定义在 MyAddInName.dll 里的一个类 . 只有在创建类的实例的时候那个集合才会被加载 . 这不是在启动 SharpDevelop 的时候而是在优先展示 pad content( 衬垫内容 ) 的时候 . 因此在启动 SharpDevelop 的时候 背景里的衬垫是不会引起集合的加载的 . 有关可能存在的扩展路径以及 AddinTree 详细运作 , 请阅读本文在文件夹中的 ”AddInTree”. addin 文件没有编写入集合,而是复制到了输出目录 . (BuildAction=None CopyToOuputDirectory=Always; 模板应该已经为您设置了这些属性 ) 4资源的使用 4.1 XmlForms 和其他文件 模板通过利用 XmlForms 显示衬垫内容展示了源文件的用途。您的 AddIn 不需要使用 XmlForms ,这个模板只是展示了源文件 ( XmlForms ) 的使用 . 您可以把任何文件放入源目录里 ( 参见在 2.1 章节里的表格 ). 设置‘ EmbeddedResource ’的创建类型 , 还有把文件编写进集合里。然后你可以用 GetExecutingAssembly (). GetManifestResourceStream ( "MyAddInName.Resources.MyUserControl.xfrm" ) 访问文件 . 不同于 SharpDevelop 1.x 编写人员会在项目设置中根据 root namespace ( 根命名空间 ) 和保存在项目里的文件夹预先设计出源文件名 . 所以 , 文件名 MyUserControl.xfrm 会扩展成 MyAddInName .Resources. MyUserControl.xfrm . GetManifestResourceStream 会返回一个 stream ,所以在你完成的时候不要忘记关掉它 . 4.2 Bitmaps ( 位图 ) 有两种类型的位图: 1.    服务于您的 addin 的位图 只要把位图放进目录里并设置‘ EmbedAsResource ’的动作。然后您可以用 Assembly.GetExecutingAssembly().GetManifestResourceStream("RootNamespace.Resources.MyImage.png") 去获取一个源文件的流 . 您可以从那个流里创建并设置一个位图 . : 我能使用一个源文件 (*.resources/*.resx) ? 这样岂不更简单 ? : 可以用但不会把事情变的更简单 . 因为修改位图更困难的。我知道多数位图从被创建开始是不会在改动的 . 这样做的主要原因是有可能引起 #Develop 的更新。而在下一个 .NET 版本上 .NET 版本 和源文件将会被破坏 . 这将给 #Develop 转换到新的框架带来更多的困难。我推荐所有人不要把字符串之外的任何东西保存在源文件里 . 二进制数据是 100% 的办不到的。 2. 服务于 ResourceService 的位图 位图在用于 ResourceService 之前必须注册登记 .ResourceService 用于衬垫和菜单项目的图标上。 当前,没有容易的方法来让 ResourceService 明白您的 Addin 提供的图标。增加新位图的最简单方法就是进入 SharpDevelopResources/BitmapResources 目录并把您的位图放在次目录里 . 然后您就能编辑 text file( 文本文件 ) SharpDevelopResources/BitmapResources/BitmapResources.res 而且为您的位图包括进一条排列 ( 靠近同一个次目录下的其他位图的排列 ). 调用 BitmapResources/build.bat 同时将把源编写插入进起始的项目 (SharpDevelop.exe) 。应用 SharpDevelop/src/build.bat 编写 SharpDevelop/ 来结束使用新的源文件。 当您想分开分布您的源的时候还有另外一个可能的办法 : :为您的项目做一个像 SharpDevelopResources/BitmapResources 的单独目录然后用一个类似的构造文件把位图构造进一个 BitmapResources.resources 二进制文件里 . 不要直接编辑 BitmapResources.resources 文件 ,一般总是使用构造的原本 ( 参见前面部分的问题 )! 然后把 BitmapResources.resources 文件添加到 您的 addin 项目同时把 “Copy to output directory” 设置成 “Always”. 为了能在 ResourceService 里注册文件 , 还要把这个排列添加到 *.addin 文件里: <BitmapResources file ="Resources\MyAddinBitmapResources.resources" /> 4.3 字符串 ( 定位 ) 你可以使用 SharpDevelop's resource service( 源服务 ) 去定位字符串 . 使用 StringParser.Parse(“${res:FullResourceName}”) 来请求定位字符串 字符 串的源名字应该是这样的格式 “YourAddInName.ResourceName”. 在所有字符串里的 XML addin 定义文件和在 XmlForms 里的访问 “${...}” 的源会被自动地解决 , 对于 MessageService 您不需要在那里调用 StringParser.Parse 如何供应您的字符串: 把一个 .resources 文件添加到 addin 里的 “Resources” 目录 (SharpDevelop ”Misc” 部分有一个模板 ) 。您应该命名它 “StringResources.resources”. 在这个文件里 , 当在 language-specific 文件里没有找到一个 resource entry( 源入口 ) 的时候 , 你要输入给 fall back 一个函数值 . 通常 , 会把 US-English 字符串放置 在那个文件里。 在源目录里放置能翻译的字符串 , “StringResources.de.resources” ( “de” 是语言代码 ) 。这些能翻译的串将会自动地编写进卫星集合。   如何使 SharpDevelop 明白您的字符串: 当首次使用您的字符串的时候运行下面的命令 : ResourceService.RegisterStrings("MyAddinName.Resources.StringResources",                                 GetType().Assembly) 这将使 SharpDevelop 加载字符串并把他们合并进 ResourceService. 无论使用者在任何时候改变 UI( 用户界面 ) 语言 , 正确的卫星集合都将被自动加载 ( 或者再加 ).   posted on 2007-12-29 10:39 tianyamoon 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/tianyamoon/archive/2007/12/29/1019533.html

相关资源:SharpDevelop开发教程.pdf

最新回复(0)