知识大全 .NET的自动序列号工具

Posted 事件

篇首语:生活的理想,就是为了理想的生活本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET的自动序列号工具相关的知识,希望对你有一定的参考价值。

.NET的自动序列号工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    运行环境: Visual Studio NET 介绍 我们每一个从原有的开发环境转移到VS NET下的用户 都遭遇到不少的阻碍 我所碰到的一个障碍就是:我原有的那些macro无法继续工作了 现在的这个编译序列号自动增长工具是从很多人的代码片断组合而成的 虽然它并不完善 而且缺乏一些特性 但它至少为进一步开发提供了一个坚实的基础 目标 这里是自动编译序列号的需求: 在每一次release编译的时候 自动增加保存在一个单独文件中的编译序列号 这个文件将被加入到我的项目中 自动记录编译的日期和序列号 代码分析 我的第一个任务是找到一个能够替代VS 中 Application_BeforeBuildStart()的事件 VS NET的设计者为我们提供了非常容易使用的编译事件: OnBuildBegin OnBuildDone OnBuildProjConfigBegin OnBuildProjConfigDone

  这些事件句柄的命名规则有一点误导 我们不希望使用OnBuildBegin 因为即使我们同时针对多种配置(release debug等等)进行编译 它也只会被执行一次 这使得难以只在编译release版本的时候增加编译序列号 OnBuildProjConfigBegin就能够在针对每一种配置编译的时候被执行 并且还提供一个名为ProjectConfig的字符串参数来描述当前所进行的编译使用的是哪一种配置 大部分的任务是在OnBuildProjConfigBegin事件处理函数中完成的 它还使用了两个辅助macro: WriteToLogFile WriteToOutputBuildPane 这两个宏都可以被写入到OnBuildProjConfigBegin事件处理函数中 或者在不用时删除 代码 OnBuildProjConfigBegin event handler Private Sub BuildEvents_OnBuildProjConfigBegin( ByVal Project As String ByVal ProjectConfig As String ByVal Platform As String ByVal SolutionConfig As String) Handles BuildEvents OnBuildProjConfigBegin abort if build type is debug If InStr( ProjectConfig Debug ) Then Exit Sub get ver filename Dim res_filename As String res_filename = DTE Solution FullName res_filename = Path ChangeExtension(res_filename ver ) open VERSION FILE and increment build number Dim msg_text As String If File Exists(res_filename) Then Dim line As String Try Dim sr As StreamReader = New StreamReader(res_filename) line = sr ReadLine() sr Close() Catch ex As Exception Module WriteToOutputBuildPane(vbCrLf & _ Version file read failed : & ex Message & vbCrLf) End Try line = Right(line line Length ) Try Dim sw As StreamWriter = File CreateText(res_filename) sw WriteLine( #define BUILD_NUM line + ) sw Close() Catch ex As Exception Module WriteToOutputBuildPane(vbCrLf & _ Version file write failed : & ex Message & vbCrLf) End Try msg_text = Build number : & line + & & Now Module WriteToOutputBuildPane(vbCrLf & msg_text & vbCrLf) Module WriteToLogFile(msg_text) Else Try Dim sw As StreamWriter = File CreateText(res_filename) sw WriteLine( #define BUILD_NUM ) sw Close() Catch ex As Exception Module WriteToOutputBuildPane(vbCrLf & _ Version file write failed : & ex Message & vbCrLf) End Try msg_text = Build number : & Now Module WriteToOutputBuildPane(vbCrLf & msg_text & vbCrLf) Module WriteToLogFile(msg_text) End If End Sub write text message to a log file Sub WriteToLogFile(ByVal msg_text As String) Dim log_filename As String log_filename = DTE Solution FullName log_filename = Path ChangeExtension(log_filename log txt ) Try Dim sw As StreamWriter = File AppendText(log_filename) sw WriteLine(msg_text) sw Close() Catch ex As Exception MsgBox( Log file write failed : & ex Message) End Try End Sub write a text message to the build pane of the output tool window Sub WriteToOutputBuildPane(ByVal msg_text As String) Create a tool window handle for the Output window Dim win As Window = DTE Windows Item(EnvDTE Constants _ qvsWindowKindOutput) Create handles to the Output window and its build pane Dim OW As OutputWindow = win Object Dim OWp As OutputWindowPane OWp = OW OutputWindowPanes Item( Build ) Add a line of text to the output pane OWp OutputString(msg_text & vbCrLf) End Sub

  集成

  注意 如果你还没有一个Macro Project 那么先要创建一个 你需要打开一个Macro Project并显示在VS Macros IDE (译者注:你可以通过快捷键Alt + F 或者点击View > Other Windows > Macro Explorer打开宏浏览窗口 双击其中一个宏 进行编辑 ) 每一个宏工程拥有一个名为EnvironmentEvents的页面 双击打开它 从类名称下拉列表中选择BuildEvents 从方法名下拉列表中选择OnBuildProjConfigBegin 增加两个引用申明(import) 异常类的申明需要引用System名称空间 文件的操作类申明需要引用System IO 在OnBuildProjConfigBegin方法中添加 双击打开Module 页面 Module 是IDE使用的一个默认页面名称 如果你使用了不同的名称 那么一定要修改OnBuildProjConfigBegin中的对应名字空间 添加两个辅助方法 添加对 System和 SystemIO 的引用申明 运行

cha138/Article/program/net/201311/12586

相关参考

知识大全 asp.net JSON序列化与反序列化使用

asp.netJSON序列化与反序列化使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对JS

知识大全 用VS.NET中的测试工具测试ASP.NET程序

用VS.NET中的测试工具测试ASP.NET程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET编程工具ASP.NET Web Matrix详细介绍

ASP.NET编程工具ASP.NETWebMatrix详细介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 SQL Server索引自动优化工具

SQLServer索引自动优化工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前段接手了个优

知识大全 .NET 开发人员必备工具:NAnt

.NET开发人员必备工具:NAnt  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  NAnt是一个

知识大全 构建ASP.NET网站十大必备工具

构建ASP.NET网站十大必备工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  构建ASPNE

知识大全 .NET的死锁调试工具:ACorns.Debugging

.NET的死锁调试工具:ACorns.Debugging  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 .NET的死锁调试工具——ACorns.Debugging

.NET的死锁调试工具——ACorns.Debugging  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 Reflector(.Net的Dll反编译工具)

Reflector(.Net的Dll反编译工具)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Re

知识大全 利用.NET Framework命令行工具

利用.NETFramework命令行工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Visu