工作中有一个应用系统,其所有数据都存放于数据库中,并使用一工具进行维护。实际使用过程中非常希望对一些数据进行版本控制,这样的需求相信大家也有碰到。
最简单易行的办法是,先将数据导成文件再手工加入SourceSafe中,反之亦然。这样做确实能达到目的,但是中间需要显式地“中转”一下,这显然有点别扭,为什么不能VS那样把SourceSafe集成在我们的工具中呢?于是便有了本文......
一阵搜索下来,发现了 Microsoft SourceSafe 6.0 Type Library 这个东东,如下图:
接下来没什么好说的,写段代码试验一下吧!试验代码实现了VSS的一些基本功能,代码本身实在没什么好多说的,无非就是先Open一个VSSDatabase,然后操作VSSItem,自己看看代码就知道了,唯一需要说明的是VSSFlags各个枚举值,下面是我自己整理的结果,不保证正确,谁有官方的麻烦通知我一声!
下载:VssDemo.zip
附VSSFlags各个枚举值说明:
最简单易行的办法是,先将数据导成文件再手工加入SourceSafe中,反之亦然。这样做确实能达到目的,但是中间需要显式地“中转”一下,这显然有点别扭,为什么不能VS那样把SourceSafe集成在我们的工具中呢?于是便有了本文......
一阵搜索下来,发现了 Microsoft SourceSafe 6.0 Type Library 这个东东,如下图:
接下来没什么好说的,写段代码试验一下吧!试验代码实现了VSS的一些基本功能,代码本身实在没什么好多说的,无非就是先Open一个VSSDatabase,然后操作VSSItem,自己看看代码就知道了,唯一需要说明的是VSSFlags各个枚举值,下面是我自己整理的结果,不保证正确,谁有官方的麻烦通知我一声!
下载:VssDemo.zip
附VSSFlags各个枚举值说明:
public enum VSSFlags { VSSFLAG_BINBINARY = 2097152; // File-type: Binary VSSFLAG_BINTEST = 1048576; // File-type: Auto-detect VSSFLAG_BINTEXT = 3145728; // File-type: Text VSSFLAG_CHKEXCLUSIVENO = 536870912; // Multiple-checkouts: Not allow VSSFLAG_CHKEXCLUSIVEYES = 268435456; // Multiple-checkouts: Allow VSSFLAG_CMPCHKSUM = 1536; // Difference: VSSFLAG_CMPFAIL = 2048; VSSFLAG_CMPFULL = 512; VSSFLAG_CMPTIME = 1024; VSSFLAG_DELNO = 262144; // Remove-local: No VSSFLAG_DELYES = 524288; // Remove-local: Yes VSSFLAG_DELTANO = 8388608; // Store-latest: Yes VSSFLAG_DELTAYES = 4194304; // Store-latest: No VSSFLAG_EOLCR = 16; // New-line: CR VSSFLAG_EOLCRLF = 48; // New-line: CRLF VSSFLAG_EOLLF = 32; // New-line: LF VSSFLAG_FORCEDIRNO = 16384; // Build-tree: No VSSFLAG_FORCEDIRYES = 32768; // Build-tree: Yes VSSFLAG_GETNO = 134217728; // Get-local-copy: No VSSFLAG_GETYES = 67108864; // Get-local-copy: Yes VSSFLAG_HISTIGNOREFILES = 1073741824; // History Include-file: Yes VSSFLAG_KEEPNO = 65536; // Keep-checkout: No VSSFLAG_KEEPYES = 131072; // Keep-checkout: Yes VSSFLAG_RECURSNO = 4096; // Recursive: No VSSFLAG_RECURSYES = 8192; // Recursive: Yes VSSFLAG_DELNOREPLACE = 786432; // Local-copy: Leave VSSFLAG_REPASK = 64; // Local-copy(writable): Ask VSSFLAG_REPMERGE = 256; // Local-copy(writable): Merge VSSFLAG_REPREPLACE = 128; // Local-copy: Replace VSSFLAG_REPSKIP = 192; // Local-copy(writable): Skip VSSFLAG_TIMEMOD = 8; // Set-file-time: Modification VSSFLAG_TIMENOW = 4; // Set-file-time: Current VSSFLAG_TIMEUPD = 12; // Set-file-time: Check In VSSFLAG_UPDASK = 16777216; //Checkin-unchanged-files: Ask VSSFLAG_UPDUNCH = 50331648; //Checkin-unchanged-files: Undo Check Out VSSFLAG_UPDUPDATE = 33554432; //Checkin-unchanged-files: Check In VSSFLAG_USERRONO = 1; VSSFLAG_USERROYES = 2; }