前言
以前一直在用VS2019来进行Arduino的开发,用的也是Visual Micro这款扩展。今天发现VS2022上也上架了这个扩展,就想着能不能把这个版本也解决。
以前解决过VS2019的vMicro,关键文件是Visual.Micro.Processing.Sketch.dll。于是尝试直接将vs2019的这个文件复制到vs2022的相关目录下来替换文件,结果打开VS2022后不起作用,还是显示要激活。奈何目前网上能找到的也只有VS2019的,也只能自己动手,丰衣足食了。
如果只想使用最终文件,不想看过程的话,直接划到文章末尾下载即可。
准备工作
主要用到ildasm和ILSpy这两款工具。网上下载链接很多,觉得太鱼龙混杂的话,分享给大家,链接放在文末。希望大家点个赞
正式开始
1.将关键文件备份出来Visual.Micro.Processing.Sketch.dll。
新手可能找不到在哪,我安装VS的时候我没有改安装路径,所以我的文件路径在C:\Program Files\Microsoft Visual Studio\2022\Preview\Common7\IDE\Extensions\1ttsyd5r.kjy\Visual.Micro.Processing.Sketch.dll,文件大小应该是780KB。我复制了一份到桌面,接下来就操作桌面上的这个文件。注意这里1ttsyd5r.kjy可能不同电脑不一样,自行搜索一下这个dll文件即可。
2.用ILSpy打开这个dll文件。这一步参照了以前版本看到的CSDN各位前辈大佬的方向,找到激活的关键代码。依次展开Visual.Micro.Processing.Sketch(4.0.0.5) -> Visual.Micro.Utils.LicenseShared -> ActivationManager -> ProductActivated(string):bool
我们的思路是让ProductActivated始终返回为true就能保持激活状态。
3.打开ildasm,打开桌面上的Visual.Micro.Processing.Sketch.dll,再选择File -> Dump,直接点OK就行,选择路径保存,保存的时候就取名叫Visual.Micro.Processing.Sketch
4.打开保存路径,里面会有一个.IL文件,一个.res文件,还有3个不用管的文件。用记事本打开IL文件,查找ProductActivated函数。
5.最关键的一部,修改代码,让他始终返回true。
// Code size 61 (0x3d)
.maxstack 1
.locals init (int32 V_0,
bool V_1,
bool V_2,
bool V_3)
IL_0000: nop
IL_0001: ldc.i4.1
IL_0002: stloc.0
IL_0003: br.s IL_0005
IL_0005: ldloc.0
IL_0006: ret
6.保存退出。打开CMD,先用cd命令定位到该文件夹下(此处我用的是Windows Terminal,能像Linux一样直接在文件夹右击并在终端打开),然后输入:
c:\windows\microsoft.net\framework\v4.0.30319\ilasm.exe /dll/resource=Visual.Micro.Processing.Sketch.res Visual.Micro.Processing.Sketch.il
将IL重新编译为dll文件。看到Successfully就心情大好了
7.这个时候就会发现文件夹下多了一个dll文件
将这个文件替换C:\Program Files\Microsoft Visual Studio\2022\Preview\Common7\IDE\Extensions\1ttsyd5r.kjy\Visual.Micro.Processing.Sketch.dll。再打开VS2022,已经不提示vMicro需要激活了,可以正常使用,解决问题。
总结
实际上不只是VS2022,之前的版本(我之前用的VS2019和2017)也可以通过相同的办法解决。
链接包含需要的工具。如果只想用最后的dll文件的话,也在里面。对大家有帮助的话,希望点个赞吧!
链接:https://download.csdn.net/download/qq_29355641/21927708?spm=1001.2014.3001.5501
2022.09.25更新
最近有朋友说直接下载dll文件无法使用。所以建议大家还是按照这个步骤自行操作一遍,生成符合自己VS版本的文件,这样最保险。