最近搞项目要与几个同事一起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_005e
IL_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。