最近搞项目要与几个同事一起coding,鉴于代码的合并和提交的问题,所以要搞个版本管理。由于是私有的项目,所以退git 求SVN了.装了乌龟和Visual SVN,才发现Visual SVN的客户端不是免费的,又想用,于是。。。。。。。你懂的;
找了网上一通,好像都没有比较新版本Visual SVN的 pojie,我就郁闷了,难道很多人都没用新版的吗?汇总了一下旧版本的方法,原理大概明白了,剩下就是动手的问题:
具体步骤如下:
1.反编译
ildasm "C:\Program Files (x86)\VisualSVN\bin\VisualSVN.Core.L.dll" /out="C:\Program Files (x86)\VisualSVN\bin\VisualSVN.Core.L.il"
2. 文本编辑器打开刚才输出的il文件,查找:
KeyToLicenseUnsafe(class VisualSVN.Core.IDecoder decoder,
string key)将该方法括号内的代码体对应的键值对替换如下:
.maxstack 2
.locals init (class VisualSVN.Core.Licensing.License V_0, class VisualSVN.Core.Licensing.License V_1, class VisualSVN.Core.Licensing.License V_2) IL_0000: nop IL_0001: newobj instance void VisualSVN.Core.Licensing.License::.ctor() IL_0006: stloc.1 IL_0007: ldloc.1 IL_0008: ldsfld valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::MinValue IL_000d: stfld valuetype [mscorlib]System.DateTime VisualSVN.Core.Licensing.License::StartTime IL_0012: ldloc.1 IL_0013: ldc.i4.1 IL_0014: stfld valuetype VisualSVN.Core.Licensing.LicenseBinding VisualSVN.Core.Licensing.License::Binding IL_0019: ldloc.1 IL_001a: ldc.i4 0x7ffffffe IL_001f: stfld int32 VisualSVN.Core.Licensing.License::Capacity IL_0024: ldloc.1 IL_0025: ldsfld valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::MaxValue IL_002a: stfld valuetype [mscorlib]System.DateTime VisualSVN.Core.Licensing.License::EndTime IL_002f: ldloc.1 IL_0030: ldc.i4.2 IL_0031: stfld valuetype VisualSVN.Core.Licensing.LicenseType VisualSVN.Core.Licensing.License::Type IL_0036: ldloc.1 IL_0037: ldstr "100" IL_003c: stfld string VisualSVN.Core.Licensing.License::PurchaseId IL_0041: ldloc.1 IL_0042: call string [mscorlib]System.Environment::get_UserName() IL_0047: stfld string VisualSVN.Core.Licensing.License::LicensedTo IL_004c: ldloc.1 IL_004d: stloc.0 IL_004e: ldloc.0 IL_004f: ldloc.0 IL_0050: ldfld valuetype [mscorlib]System.DateTime VisualSVN.Core.Licensing.License::StartTime IL_0055: stfld valuetype [mscorlib]System.DateTime VisualSVN.Core.Licensing.License::PurchaseDate IL_005a: ldloc.0 IL_005b: stloc.2 IL_005c: br.s IL_005eIL_005e: ldloc.2
IL_005f: ret保存。
3. 回到命令行输入”ilasm 刚才的il文件 /dll”
例如:ilasm "C:\Program Files (x86)\VisualSVN\binVisualSVN.Core.L.il" /dll
4.编译得到新的dll重命名后覆盖原VisualSVN.Core.L.dll。