青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 64, 文章 - 11, 評論 - 12, 引用 - 0
數據加載中……

管理項目的版本號

      現在,很多公司都是在用免費的SVN工具來管理版本。如何讓可執行程序與DLL的信息與生成時的SVN版本相對應呢?以便于更好地跟蹤項目呢?在原來我是用一段腳本來實現的。
分為Version.h, Version.rc,和一段腳本。
//Version.h
#define SHADOW_MAJOR_VERSION 4
#define SHADOW_MINOR_VERSION 5
#define SHADOW_BETA_MAJOR_VERSION 7
#define SHADOW_BETA_MINOR_VERSION 155
#define SHADOW_VERSION "4.5.7.155"
#define SHADOW_REVISION "0"

在version.rc中,包含Version.h并把相應的版本信息用上面的SHADOW_REVISION及 SHADOW_VERSION賦值

 1' Set the revision for the application
 2' 
 3
 4' Get File path
 5scriptName = wscript.scriptfullname
 6scriptPath = Left(scriptName, instrRev(scriptName, "\"))
 7
 8' create svn object and get the last revision
 9Set svnObj = CreateObject("SubWCRev.object")
10svnObj.GetWCInfo scriptPath,0,0
11versionDes = "Revision: " & svnObj.Revision & ". Date:" & svnObj.Date
12
13' update the version.h with the lastest version
14Set fs = CreateObject("Scripting.FileSystemObject")
15scriptPath = Left(scriptPath, Len(scriptPath) -1)
16slnPath = Left(scriptName, instrRev(scriptPath, "\"))
17versionFullName = slnPath & "Version.h"
18
19' check file valid
20If Not fs.fileexists(versionFullName) Then
21    MsgBox "The file version.h does not exists."
22    wscript.quit
23End If
24
25' read content from the file
26Set fRead = fs.OpenTextFile(versionFullName, 1)
27fContent = fRead.ReadAll
28fRead.close
29
30' modify the revision value
31Set regEx = New RegExp
32regEx.Pattern = "#define\s+SHADOW_REVISION\s+""(.*)"""
33Set Matches = regEx.Execute(fContent)
34For Each Match in Matches  
35      RetStr = RetStr & "Match found at position "
36      RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
37      RetStr = RetStr & Match.Value & "'." & vbCRLF
38      If Match.submatches(0= versionDes Then
39          MsgBox "The revision is already lastest"
40          wscript.quit
41      End If
42Next
43fContent = regEx.Replace(fContent, "#define SHADOW_REVISION """ & versionDes & """")
44
45' Write to version.h
46Set fWrite = fs.OpenTextFile(versionFullName, 2)
47fWrite.Write fContent
48fwrite.close
49MsgBox "Update the revision successful"

可以看出實現起來比較麻煩。
這里介紹一種新的方法。新添一個模板文件,格式如下。
 1/*
 2    Substitution keyword file for SubWCRev (part of Tortoise SVN), to autochange version number with SVN Rev number
 3*/

 4
 5#pragma once
 6
 7
 8#define  _ProductVersion "3.0.0.1"
 9#define  _FileVersion "3.2.0.$WCREV$";
10#define  _Revision  "$WCREV$";
11#define  _Modified  "$WCMODS?Modified:Not modified$";
12#define  _Date      "$WCDATE$";
13#define  _Range     "$WCRANGE$";
14#define  _Mixed     "$WCMIXED?Mixed revision WC:Not mixed$";
15#define  _URL       "$WCURL$";
16#define  _ProductName  "Software 1.0"
17#define  _CompanyName   "Company"
18#define  _FileDescription "SoftWare module"
19#define  _LegalCopyright "Company, All rights reserved."
20#define  _FileVersion_0  3
21#define  _FileVersion_1  2
22#define  _FileVersion_2  0
23#define  _FileVersion_3  $WCREV$
24#define  _ProductVersion_0  3
25#define  _ProductVersion_1  2
26#define  _ProductVersion_2  0
27#define  _ProductVersion_3  1

在打包時運行如下的批處理文件就會自動生成或者更新version.h
SubWCRev.exe ..\ SubWCRev.txt ..\version.h

pause

資源文件還是引用version.h定義好的常量。這種方式就很簡單,而且不易出錯。上面介紹C++方面的版本跟蹤,在C#中則是先制定AssemblyInfo.cs的一個模板,在打包時用上面的命令去更新AssemblyInfo.cs。

posted on 2009-04-24 10:45 Robertxiao 閱讀(857) 評論(0)  編輯 收藏 引用 所屬分類: 天馬行空

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线免费视频| 性欧美videos另类喷潮| 亚洲区欧美区| 亚洲深夜影院| 久久精品国内一区二区三区| 欧美黄色免费网站| 中文高清一区| 久久久久久久999精品视频| 欧美区二区三区| 国产亚洲观看| 亚洲天堂免费在线观看视频| 久久综合九色九九| 日韩西西人体444www| 久久久久久免费| 国产精品久久久久av免费| 亚洲国产1区| 欧美综合第一页| 亚洲毛片在线观看| 久久这里有精品15一区二区三区| 国产精品二区在线观看| 亚洲高清视频在线观看| 欧美一级在线视频| 亚洲清纯自拍| 久久精品一区二区| 日韩视频中文| 久久精品综合一区| 国产精品激情| 日韩一级精品视频在线观看| 久久午夜电影| 亚洲在线成人| 欧美日韩三区| 亚洲区在线播放| 久久综合九色| 午夜电影亚洲| 国产精品久久久久9999吃药| 99riav1国产精品视频| 美女国产精品| 香蕉免费一区二区三区在线观看 | 亚洲午夜精品久久| 免费久久精品视频| 国产在线国偷精品产拍免费yy| 亚洲一区二区三区在线播放| 亚洲国产影院| 老司机精品视频网站| 国产无遮挡一区二区三区毛片日本| 在线视频欧美日韩| 亚洲国产日韩欧美在线图片| 久久久亚洲成人| 国产一区二区三区在线观看免费视频 | 国产精品久久久久久亚洲调教| 亚洲精品午夜精品| 免费在线看成人av| 久久精品九九| 国产中文一区二区| 久久精品一区二区三区不卡| 亚洲欧美日韩精品久久久久| 国产精品免费视频xxxx| 亚洲婷婷综合久久一本伊一区| 亚洲欧洲一区| 欧美高清视频在线| 亚洲人成啪啪网站| 欧美国产免费| 免费国产自线拍一欧美视频| 136国产福利精品导航网址应用 | 亚洲激情小视频| 久久亚洲精选| 极品裸体白嫩激情啪啪国产精品| 欧美在线一二三区| 午夜精品理论片| 国产欧美日韩亚洲| 欧美在线不卡| 午夜在线精品| 国产在线不卡视频| 久久人人看视频| 久久久99免费视频| 在线观看日韩| 亚洲国产成人久久| 欧美精品一区二区三区在线看午夜| 亚洲日本黄色| 亚洲国产精品久久久| 欧美精品99| 亚洲一区二区三区视频| 亚洲一区二区在线看| 国产日韩欧美精品在线| 久久久久综合一区二区三区| 久久久在线视频| 亚洲黄色有码视频| 亚洲精品免费看| 国产精品高潮呻吟视频| 久久国产精品亚洲77777| 久久久精品国产免大香伊| 亚洲成人原创| 亚洲精品国精品久久99热一| 欧美性一区二区| 欧美在线资源| 久久综合成人精品亚洲另类欧美| 亚洲毛片播放| 中文在线资源观看视频网站免费不卡| 国产精品一区二区三区成人| 久久综合精品国产一区二区三区| 欧美不卡视频一区| 中文无字幕一区二区三区| 亚洲一区网站| 樱花yy私人影院亚洲| 亚洲精品日韩一| 国产精品一区视频网站| 麻豆成人91精品二区三区| 免费欧美在线视频| 亚洲天堂网站在线观看视频| 欧美一区亚洲| 亚洲肉体裸体xxxx137| 一区二区三区欧美激情| 国产一区二区久久精品| 亚洲高清网站| 国产精品一区二区三区免费观看| 美女黄毛**国产精品啪啪| 欧美理论电影在线观看| 欧美主播一区二区三区美女 久久精品人 | 亚洲欧美日本伦理| 久久精品综合网| 一二三区精品| 久久精品人人做人人爽| 99国产精品99久久久久久粉嫩| 亚洲自拍都市欧美小说| 亚洲国产片色| 亚洲一区二区视频在线| 亚洲黄色在线看| 亚洲欧美一级二级三级| 亚洲日本欧美| 校园激情久久| 一区二区三区精品国产| 久久狠狠久久综合桃花| 欧美性色视频在线| 久久乐国产精品| 欧美日韩中文| 欧美成人精品一区二区三区| 国产精品久久77777| 欧美www视频在线观看| 国产精品视频99| 亚洲国产精品成人综合| 国产一区二区三区日韩欧美| 99成人免费视频| 亚洲国内精品| 欧美诱惑福利视频| 亚洲资源av| 欧美激情一区二区三区| 开元免费观看欧美电视剧网站| 国产精品二区二区三区| 亚洲激情视频在线| 一区二区三区在线免费视频| 亚洲在线1234| 亚洲一区二区精品视频| 欧美第一黄色网| 免费视频最近日韩| 国产欧美一区二区三区久久人妖| 99人久久精品视频最新地址| 91久久精品美女高潮| 久久大香伊蕉在人线观看热2| 亚洲欧美国产三级| 欧美日韩欧美一区二区| 亚洲国产精品一区在线观看不卡| 一区二区三区在线免费视频| 午夜精品久久久久久久男人的天堂 | 香蕉成人久久| 欧美日韩一级片在线观看| 亚洲电影免费在线观看| 国内精品久久久久久久97牛牛| 亚洲香蕉伊综合在人在线视看| 99在线热播精品免费| 蜜臀久久久99精品久久久久久| 巨乳诱惑日韩免费av| 国产午夜精品视频免费不卡69堂| 亚洲视频一二区| 在线视频欧美精品| 欧美激情亚洲精品| 亚洲福利一区| 91久久精品一区二区别| 狼人天天伊人久久| 美女网站在线免费欧美精品| 韩国成人精品a∨在线观看| 亚洲欧美在线x视频| 午夜视频在线观看一区二区| 国产精品极品美女粉嫩高清在线| 一区二区三区高清在线观看| 国产精品99久久久久久白浆小说 | 在线综合视频| 亚洲一区二区三区视频播放| 欧美日韩免费| 99视频精品全国免费| 一区二区三区黄色| 欧美日韩精品系列| 日韩一级片网址| 亚洲网站在线| 国产精品久久久久av| 亚洲永久免费av| 欧美专区在线观看一区| 国产欧美一区二区三区国产幕精品| 午夜久久资源| 久久午夜激情| 亚洲黄色性网站|