Introduction to the .NET Reflector Add-In Model

原文地址
Reflector add-in 是一个dll/exe 的assembly文件,里面有一个包,包是一个继承IPackage接口,接口里面定义了Load,Unload 方法,一个IServiceProvider是可以在已经被传递期间加载和允许出入一个服务的子集,是Reflector 对象模型的一部分。


1:HelloWorld Add-In


这个Simple创建一个继承IPackage接口的包,用Load方法为 IWindowManager服务实现一个IServiceProvider,允许你与Reflector的窗口系统交互。而ShowMessage方法是用来显示信息的。

using System;
using Reflector;
 
internal class HelloWorldPackage : IPackage
{
    private IWindowManager windowManager;
 
    public void Load(IServiceProvider serviceProvider)
    {
        this.windowManager = (IWindowManager) serviceProvider.GetService(typeof(IWindowManager));
        this.windowManager.ShowMessage("Loading HelloWorld!");
    }
 
    public void Unload()
    {
        this.windowManager.ShowMessage("Unloading HelloWorld!");
    }
}

这个代码编译后进入add-in dll之后就像引用库样引用Reflector.exe。

csc.exe /target:library /out:HelloWorld.dll *.cs /r:Reflector.exe

这个add-in能复制你的Reflector directory(目录)和加载使用时使用菜单里面的View|Add-Ins。


2:Services Available to Add-In Authors
确认表的list,大部分共同使用服务,能被通过IServiceProvider.的GetService方法来访问。

Service Description
IAssemblyBrowser 在ActiveItem(激活选项)中维持当前选中代码模型对象。你能指定一个代码模型对象就像使用IMethodDeclaration接口从你的程序中的ActiveItem改变在浏览窗口中当前的选种项。
IWindowManager  管理的应用程序窗口和面版窗口。你能添加自己的面版窗口到窗口集合中。它会为你创建IWindow hosting frame。
ICommandBarManager 管理Reflector菜单条,工具条和上下文菜单。你能按照它的标示符查找一个上下文菜单,并添加item到它里面(ICommandBarManager)
IConfigurationManager 管理项来于Reflector的configuration文件,这个文件是IConfiguration对象的一个子集,List的选项被加上像属性名样的"0","1","2"等字符。
IAssemblyManager 维持当前List中加载的assembly。LoadFile是使用来从硬盘中加载一个assembly文件。Unload允许从内存中卸载一个assembly文件。这个assembly文件集合将保存当前所加载的所有的assembly文件。
ILanguageManager 管理不同编程语言格式的模块,ActiveLanguage(当前使用的语言)属性呈现当前ILanguage对象,你能实现ILanguage interface去添加你自己的语言并代码呈现。使用RegisterLanguage 添加你的add-in到 ILanguageManager中。

3:Adding Items to Command Bars and Context Menus

ICommandBarManager服务语序你添加菜单选项到Reflector的主要菜单和上下文菜单中(context menus)。每一个子菜单和上下文菜单都要在CommanBars集合中注册一个标识名.下面表常规的标识符:

Identifier Description
Tools 工具菜单显示如主菜单的一部分。 
Browser.Assembly 上下文菜单适合于前选中的assembly.
Browser.Namespace 上下文菜单适合于前选中的namespace. 
Browser.TypeDeclaration 上下文菜单适合于前选中的declaration. 
Browser.MethodDeclaration 上下文菜单适合于前选中的 method declaration.

二:How to Setup the Build Environment



1:Download and unzip the latest source snapshot from the Source Code section.
2:Copy Reflector.exe to the \Build directory.
3:Build the add-ins by running msbuild ReflectorAddIns.sln from \Source.
4:The build output will be in the \Build folder.


三:How to Setup an Enlistment

(1)发送信息给自己的工程并请求获得一个成员。
(2)安装Team Explorer client需要下面步骤:Obtaining the Team Explorer Client(http://www.codeplex.com/Wiki/View.aspx?
ProjectName=CodePlex&title=Obtaining the Team Explorer Client)
(3)并使用下面信息连接工程:
Server:   tfs03.codeplex.com
Port:     443
Protocol: https
Username: snd\<username>_cp
Password: <password>


指导方针:


需要添加这些list:

(1)Each add-in has a source folder under \main\Source. ReflectorAddIns.sln builds most of the add-ins to the \main\Build directory.
(2)DO NOT CHECK-IN REFLECTOR.EXE.
(3)All add-ins should be built against .NET Framework 1.0 if possible. To enable this you can specify the .NET 1.0 build target in ReflectorAddIns.sln.
(4)Change the csproj file to include the following MSBuild snippet:

<OutputPath>..\..\Build\</OutputPath>
<BaseIntermediateOutputPath>..\..\Build\Intermediate\$(AssemblyName)\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>


第四就是下载工具后,还能在工具里面添加插件:

下面的插件在上面提到的页面有下载

Add-In Name Description
 Review:  (允许你编辑和管理注释) 
Diff: 显示不同版本之间的相同asembly
SilverlightLoader: 允许浏览页面的结构和下载下来的Silverlight的assemblies
FileDisassembler: 使用堆分解并将信息输出一个文件,适合任何Reflector支持的语言
Reflexil: 允许操作一个已经加载的assembly的和写入硬盘的IL
BamlViewer: 加载BAML resources( wpf)和呈现一个XAML格式
SilverlightBrowser: 加载和显示文件页面上的Silverlight
ComLoader:                        会显示一个COM components清单适合于浏览和转换他们成为脱管理的interop assemblies
SQL2005Browser: 显示,浏览.NET assemblies中存储在SQL Server2005数据
FileGenerator: 使用堆分解并将信息输出一个文件,适合任何Reflector支持的语言
Deblector: 允许你在Reflector中debug处理
Doubler: 为代码产生unit tests, stubs and wrappers
Graph: 图片依赖的draws assembly和IL图片
BizTalkDisassembler: 允许你为BizTalk以前包含的assembly和extract做出一个清单
DependencyStructureMatrix: 允许你创建和浏览信任的structure matrices
CodeSearch: 允许你在被分解的代码中以字符和regular expressions的方式搜索
SequenceViz: 这个绘制Sequence表
AutoDiagrammer: 绘制class表
Xmi4DotNet: 导出一个assembly成XML或UML
AssemblyCollectionSort: 按字母排序当前的Assembly
Enums:   转换big flags和enum查看器
PowerShellLanguage: 呈现输出Windows PowerShell script
DelphiLanguage: 为.Net Reflector扩张C++/CLI language呈现模块
CppCliLanguage: 呈现使用C#代码时候所必须创建的IL主体
ReflectionEmitLanguage: 是一个VS插件能导航任何反编译后的代码元素
Hawkeye: 一个工具允许你debug,Windows Forms中的UI树
ClassView: 显示类定义的情况
CodeModelViewer: 显示选中项目的底层代码模型对象

-----------------works guo----------

转载于:https://www.cnblogs.com/worksguo/articles/988180.html

.NET Reflector 资料收集相关推荐

  1. Spring Cloud 学习资料收集

    导读 关于Spring Cloud 去年开始逐渐多的出现在我的视线中,随着微服务这个词越来越热,我们或多或少的都听说过这个词,我们可以将Spring Cloud 看做是java 中Spring 为我们 ...

  2. JNI学习开始篇 基础知识 数据映射及学习资料收集

    JNI学习开始篇 基础知识 数据映射及学习资料收集 JNI介绍 JNI(Java Native Interface) ,Java本地接口. 用Java去调用其他语言编写的程序,比如C或C++. JNI ...

  3. VULKAN学习资料收集

    VULKAN学习资料收集 https://github.com/vinjn/awesome-vulkan 张静初 https://zhuanlan.zhihu.com/p/24798656 知乎 ht ...

  4. RTS寻路相关资料收集

    RTS寻路相关资料收集 http://www.cocoachina.com/game/20150824/13174.html RVO算法 RVO避开agent posted on 2018-09-20 ...

  5. UNITY优化资料收集

    UNITY优化资料收集 U3D手册: Optimizing garbage collection in Unity games https://zhuanlan.zhihu.com/p/2530699 ...

  6. c# LUA 互通,相关资料收集

    c# LUA 互通,相关资料收集 1,https://blog.csdn.net/henren555/article/details/44095509 posted on 2018-07-27 11: ...

  7. UNITY 内存问题资料收集

    UNITY 内存问题资料收集 1,https://blog.csdn.net/wetest_tencent/article/details/52130703 2,http://blog.51cto.c ...

  8. dubbo/dubbox部署资料收集

    dubbo/dubbox部署资料收集 最近由于项目需要要部署bubbox,dubbo,在找资料过程中用的的一些网址如下,后来由于取消没有实际应用,以备今后再用 http://dubbo.io/Admi ...

  9. 【转帖】财务尽职调查资料收集总结

    资料收集是进行财务尽职调查的重要依据,资料收集不仅有外部资料,也有企业内部资料.并且客户从项目组资料的收集过程中,可以判断出一个项目经理及其团队的素质及能力. 一.资料来源 项目期间资料主要来源于以下 ...

最新文章

  1. 第二十二篇:Spring简单定时任务
  2. QQ浏览器怎么设置主页 QQ浏览器设置默认主页教程
  3. linux下包管理工具apt-get
  4. 美国政府继续紧盯中兴,并可能剑指华为
  5. 计算机二级C语言题库
  6. 统计叶子结点c语言,统计二叉树中叶子结点个数
  7. c语言差分qpsk编码信道估计 pudn,基于DSP的电力线载波OFDM调制解调器设计.doc
  8. 并行程序设计整理(一)
  9. 寒霜PBR阅读与实践[1]:Material材质--Physically Based Rendering 3.0 --SIGGRAPH 2014
  10. 如何安装浏览器插件,一篇文章全搞定
  11. 离散数学——coq学习笔记(二)
  12. 手动安装shipyard
  13. 对于短信验证码登录流程详细步骤
  14. 一款 API 测试神器,非常强
  15. WPF中的StackPanel、WrapPanel、DockPanel
  16. Joda-Time 入门
  17. html 窗口置顶,通用窗口置上(窗口置顶)工具
  18. BEVSegFormer:一个来自任意摄像头的BEV语义分割方法
  19. 第四届中国软件开源创新大赛“代码评注赛”季度评审结果出炉
  20. c语言里面gets(a)是什么意思,C语言中的gets()函数

热门文章

  1. Context 笔记
  2. html表单中选择日期,Django:ModelForm中的日期选择器
  3. 基于深度学习的火焰检测系统(YOLOv5清新界面版,Python代码)
  4. Android壁纸隐藏,android – 壁纸设置强制关闭
  5. 淘宝网简易实现, Html + css + Javascript + Jquery +Swiper +Vue, 期末js大作业
  6. python爬取人脸识别图片数据集
  7. 22届校招Offer开奖了:腾讯年薪45万+,房补每月4K,倒挂老员工:这辈子都干不过刚毕业的!...
  8. 图书管理系统数据库综合应用
  9. 劝人开心的名言 -如何一句话让别人开心
  10. hash表的实现和hash桶的示例(c实现)