使用Reflexil修改类库
因为公司一个项目需要修改PPS的颜色,于是反编译了PPS的代码发现,作者很不厚道的把所有着色都HardCode在代码里
private static void InsertDefaultSeriesColors(AnalyticChartTemplate template)
{
template.Add_CustomColor(Color.FromArgb(0, 0, 0, 0));
template.Add_CustomColor(Color.FromArgb(0xec, 0xc0, 80, 0x4d));
template.Add_CustomColor(Color.FromArgb(0xec, 0x9b, 0xbb, 0x59));
template.Add_CustomColor(Color.FromArgb(0xec, 0xdd, 0xd9, 0xc3));
template.Add_CustomColor(Color.FromArgb(0xec, 0x4b, 0xac, 0xc6));
template.Add_CustomColor(Color.FromArgb(0xec, 0xf7, 150, 70));
template.Add_CustomColor(Color.FromArgb(0xec, 0x93, 0x89, 0x53));
template.Add_CustomColor(Color.FromArgb(0xec, 0x8d, 0xb3, 0xe2));
template.Add_CustomColor(Color.FromArgb(0xec, 0xe5, 0xb9, 0xb7));
template.Add_CustomColor(Color.FromArgb(0xec, 0xd7, 0xe3, 0xbc));
template.Add_CustomColor(Color.FromArgb(0xec, 0xcc, 0xc1, 0xd9));
template.Add_CustomColor(Color.FromArgb(0xec, 0xb7, 0xdd, 0xe8));
template.Add_CustomColor(Color.FromArgb(0xec, 0xfb, 0xd5, 0xb5));
template.Add_CustomColor(Color.FromArgb(0xec, 0x80, 100, 0xa2));
template.Add_CustomColor(Color.FromArgb(0xec, 15, 0x24, 0x3e));
template.Add_CustomColor(Color.FromArgb(0xec, 0x63, 0x24, 0x23));
template.Add_CustomColor(Color.FromArgb(0xec, 0x4f, 0x61, 40));
template.Add_CustomColor(Color.FromArgb(0xec, 0x5f, 0x49, 0x7a));
template.Add_CustomColor(Color.FromArgb(0xec, 0x20, 0x58, 0x67));
template.Add_CustomColor(Color.FromArgb(0xec, 0x97, 0x48, 6));
template.Add_CustomColor(Color.FromArgb(0xec, 0x49, 0x44, 0x29));
}
在没有其它办法下,只好尝试修改PPS的类库,再加上原有签名重新部署一次。
网上找到Reflector的一个插件Reflexil,附上地址
http://reflexil.net/
这个插件能够直接在Reflctor下修改类库,并且保留原有签名, 原本就可以解决我所有问题,但是尝试过后,发现保存后的类库是延迟签名的, 什么延迟签名,可以参考下这链接http://msdn.microsoft.com/en-us/library/t07a3dye.aspx所以不能直接部署到GAC, 头疼花了接近一天的时间, 去寻找如何部署, 在快要绝望的时候, 意外的发现可以使用ilasm对类库再签名, 这就意味着我可以先使用ilasm进行反编译,再使用原有资源进行签名, 为了印证是否正确 ,写了如下指命
进入vs工具命令行ildasm C:\Microsoft.PerformancePoint.Scorecards.ServerRendering.Patched.dll /out:c:\Microsoft.PerformancePoint.Scorecards.ServerRendering.il
进入Microsoft.Net下frameworkilasm c:\Microsoft.PerformancePoint.Scorecards.ServerRendering.il /dll发现能够注册到GAC, 但是又发现了一个问题,传统GAC上根本看不到我注册的dll, 原来又是我粗心了, 使用了.net 4.0的ilasm , 使用到4.0的ilasm重编译的时候会编译成4.0的dll, 放的位置跟2.0的位置是不相同的, 于是使用2.0 ilasm重新试一遍, 大功造成 。在这做一个总结, 要修改原有类库并使用原有签名的步骤是1. 使用Reflexil进行修改,并保存为一个延迟签名的文件2. 使用对应版本的ilasm进行反编译再重编译
使用Reflexil修改类库的更多相关文章
- c#:Reflector+Reflexil 修改编译后的dll/exe文件
不知道大家有没有这样的经历:现场实施时测试出一个bug,明明知道某个dll/exe文件只要修改一二行代码即可,但手头没有开发环境,紧急情况下,可以用reflector + reflexil 临时直接修 ...
- .net reflector+reflexil修改编译后的dll文件
1.用reflector打开相关的dll文件. 2.如果reflector中没有reflexil插件,点击工具栏中的Tools->Add-Ins 3.找到需要修改的文件,双击打开该文件:点击To ...
- Android Studio 将工程作为第三方类库的步骤
一.将工程的module名称修改为自己要添加的类库名称 1.选中module文件夹右键到Rename项 2.选中Rename module项 3.修改为自己的名称,如VolleyLibary 二.修改 ...
- Resharper 修改命名空间
1. 使用Reshared 右键->Refactor->Rename 修改所有文件的命名空间(鼠标移动到对应类的命名空间) 2.修改类库中的命名空间 包括程序集信息 右键->属性 3 ...
- 在普通的"类库"项目中添加 WPF 的 Window 对象
最近开发一个 WPF 项目, 在此项目中有个类库工程, 在开发的过程中发现在类库工程中竟然添加不了 WPF 窗口对象和一些其他的 WPF 对象,在新建窗口中选 WPF 类型,只有一个 “用户控件(WP ...
- OpenLiveWriter代码插件
1.OpenLiveWriter安装 Windows Live Writer在2012年就停止了更新,Open Live Writer(以下简称OLW)是由Windows Live WriterWri ...
- 代码的坏味道(22)——不完美的库类(Incomplete Library Class)
坏味道--不完美的库类(Incomplete Library Class) 特征 当一个类库已经不能满足实际需要时,你就不得不改变这个库(如果这个库是只读的,那就没辙了). 问题原因 许多编程技术都建 ...
- 【无私分享:ASP.NET CORE 项目实战(第四章)】Code First 创建数据库和数据表
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 本章我们来介绍下Asp.net Core 使用 CodeFirst 创建数据库和表,通过 控制台 和 dotnet ef 两种 ...
- [.NET逆向] 破解NET的四大神器
原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这四大神器我似乎觉得几乎所有的NET程序破解都不在话下了 ...
随机推荐
- Go语言获取项目当前路径
package main import ( "fmt" "os" "os/exec" "strings" ) func ...
- Android开发环境搭建相关文章列表(转载)
Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...
- 字体文件放入CDN服务器中,跨域问题(IIS版)
Font from origin 'http:/XXXX' has been blocked from loading by Cross-Origin Resource Sharing policy: ...
- C#中,接口不能被实例化,但存在特例
看一个例子: interface IFoo { string Message { get; } } 则, IFoo obj = new IFoo("abd"); 将会报错:接口不能 ...
- Direct3D11学习:(五)演示程序框架
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 在此系列最开始的文章Direct3D11学习:(一)开发环境配置中,我们运行了一个例子BoxDemo,看过这个例 ...
- SQL Server中的事务日志管理(5/9):完整恢复模式里的日志管理
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- iOS实现图像素描效果
使用GPUImageSketchFilter对象实现图像素描效果 NSString *const kGPUImageSketchFragmentShaderString = SHADER_STRING ...
- CheckListBox的实现方式分析
实际项目中常常要实现有CheckBox列表框.但是WPF没有自带这样的一个控件,下面就用Style来实现这样的功能.而对于CheckBox列表框,又常常会有一个Select All的CheckBox来 ...
- SQLDMOHelper
在网上传闻SQLDMO是个好东西,当时没有注意这个传闻是什么时候了,后来才在微软的官网上看见,从SQL Server2008开始就不用SQLDMO了,取而代之的是SMO.无奈了,还写了个Helper. ...
- HTML5 语义元素
返回目录 http://hovertree.com/h/bjaf/html5zixueji.htm 一个语义元素能够清楚的描述其意义给浏览器和开发者.无语义 元素实例: <div> 和 & ...