再次发布SQL Prompt 3.8的新的patch,解决了不能格式化T-SQL的问题

 上一篇关于推荐SQL Prompt 3.8的随笔,园子里几位朋友回复反应不能使用格式化功能,并强烈要求再次解决该问题,

      所以昨天晚上弄到凌晨2点,最终的SQL Prompt补丁:
下载地址:/Files/jintan/Sql_Prompt_RedGate.Licensing.Client.rar
支持格式化SQL

其实破解过程很简单,没有涉及到脱壳,跟踪等。

大致的思路是这样的:
public int DaysLeftInTrial 这个属性返回值大于0,我这里是14,
       public int DaysLeftInTrial
        
{
            
get
            
{
                
int days;
                
if (this.TrialStatus != TrialStatus.InTrial)
                
{
                    
return 0;
                }

                
if (this.d == DateTime.MinValue)
                
{
                    TimeSpan span 
= DateTime.UtcNow.Subtract(this.b);
                    days 
= 14 - span.Days;
                }

                
else
                
{
                    days 
= this.d.Subtract(DateTime.UtcNow).Days;
                }

                
if (days < 0)
                
{
                    days 
= 14;
                }

                
return days;
            }

        }
 


为了保险起见,我又修改了TrialStatus ,
public TrialStatus TrialStatus 

     get{
return TrialStatus.InTrain; } 
     set{.} 

这样已经可以保证永远都是试用并且不过期。

最后修改IL代码,我用的是http://www.codeproject.com/KB/dotnet/NetDasm.aspx这个工具修改IL,配合Reflector使用
当然你也可以直接用SDK里面的ildasm+ilasm工具修改。

这次不用做去掉强命名的操作了,直接copy到目录覆盖原来的就行了。
注意:经测试,一定要去掉强命名才能使用,请自己去掉RedGate.Licensing.Client.dll的强命名。

对于Red-Gate的其他产品,同样可以使用上面的方法,应该没有问题的。

注:
上个版本修改的地方是:
public bool get_Activated()
{
    
return true;
}
对应的IL:
Code:
method public hidebysig specialname instance bool get_Activated() cil managed {
.maxstack 8
L_0000: ldc.i4.1
L_0001: ret
}
但是不知道什么原因,格式化的菜单一直是灰色。所以才有现在的这个Patch

posted @   代码乱了  阅读(7963)  评论(68编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示