捕捉梦想

※H※L※

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  17 随笔 :: 0 文章 :: 237 评论 :: 10 引用
                                            
                     如何将自己的代码自动添加版权信息

      现在大多数公司都规定程序员在程序文件的头部加上版权信息,这样每个人写的文件都可以区分开来,如果某个文件出现问题就可以快速的找到文件的创建人,用最短的时间来解决问题,常常是以下格式:
//======================================================================
//
//        Copyright (C) 2007-2008 三月软件工作室    
//        All rights reserved
//
//        filename :Class4
//        description :
//
//        created by 侯垒 at  03/09/2008 18:41:28
//        http://houleixx.cnblogs.com
//
//======================================================================
     有些人使用Copy和Paste的方式,这样即浪费时间,效果又不是很好,就说上面的时间你就无法去Paste,哈哈,下面我就教大家怎样去添加这些信息,使我们的代码更有个性.
1.在visual studio 2005的安装路径下
        如:[盘符]:\Program files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplatesCache
2.找到文件夹如图所示:
       
里面可以为各种语言进行修改.如果对WinForm中的类进行修改可以打开\CSharp\2052\Class.zip.其中\CSharp\2052\包括了所有WinForm文件类型的模板.
打开Class.zip里面有一个Class.cs文件,我们对其进行修改,当我们在WinForm中添加类文件的时候,类文件就会自动添加上我们的信息.
如下:
//======================================================================
//
//        Copyright (C) 2007-2008 三月软件工作室    
//        All rights reserved
//
//        filename :$safeitemrootname$
//        description :
//
//        created by 侯垒 at  $time$
//        http://houleixx.cnblogs.com
//
//======================================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace $rootnamespace$
{
    
class $safeitemrootname$
    
{
    }

}


$rootnamespace$为生成类的命名空间的名字,$safeitemrootname$为生成类的类名.
可以看到我们在版权信息中加入了$time$,它就可以直接给我们加入创建的时间.我们可以对\CSharp\2052中所有的模板进行修改,切忌不要轻易修改系统那些代码,以免影响我们的正常的使用.
对于做Web开发的人员来说可以在ItemTemplatesCache\Web\CSharp\2052里进行修改.
新建一个类文件就可以实现了插入我们自定义的版权信息.
//======================================================================
//
//        Copyright (C) 2007-2008 三月软件工作室    
//        All rights reserved
//
//        filename :NewClass
//        description :
//
//        created by 侯垒 at  03/09/2008 20:31:56
//        http://houleixx.cnblogs.com
//
//======================================================================
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// NewClass 的摘要说明
/// </summary>

public class NewClass
{
    
public NewClass()
    
{
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }

}

哈哈,是不是很酷呀!赶快个性一下你的代码吧!
 
(作者:侯垒
posted on 2008-03-09 20:41 侯垒 阅读(3700) 评论(82)  编辑 收藏 所属分类: asp.netC#

评论

#1楼  2008-03-09 21:03 SZW      
为什么不直接修改ItemTemplates然后 devenv /setup 一下呢?
  回复  引用  查看    

#2楼 [楼主] 2008-03-09 21:07 侯垒      
@SZW
感觉这样挺方便的.也没有考虑太多.不过对于你说的还不是很理解,请指点.
  回复  引用  查看    

#3楼  2008-03-09 21:11 SZW      
@侯垒
看Cache就可以知道是缓存,其实真正源文件是在ItemTemplates里面,可以说在ItemTemplates里面修改更彻底。
当然,在Cache里面修改的短期效果是一样的,但是可能会在一些更新之后丢失哦:)
  回复  引用  查看    

#4楼 [楼主] 2008-03-09 21:18 侯垒      
@SZW
哦.原来是这样呀!开始我也想过修改ItemTemplates文件夹中的东西,但是里面全是压缩的zip文件,所以没有敢修改.
谢谢指点.

  回复  引用  查看    

#5楼  2008-03-09 21:25 tmxkhd666 [未注册用户]
方法还可以.
顶一个.
还有没有更好的方法啊.


  回复  引用    

#6楼  2008-03-09 21:29 Zhuang miao      
应用不多,不过楼主的这种方法,倒是让我受些启发,去干点别的 :-)
  回复  引用  查看    

#7楼 [楼主] 2008-03-09 21:34 侯垒      
@Zhuang miao
是呀!我们通过这个模板不但能修改这些信息,我们还可以添加更多的信息.更有利于我们的开发.
  回复  引用  查看    

#8楼  2008-03-09 21:42 金色海洋(jyk)      
感谢。

看了之后,受到了启发,我们还可以做些其他的设置。

我还在用 vs2003 ,我喜欢把 #region Web 窗体设计器生成的代码 放在PageLoad的上面,每次新建后,都要手动修改,这回改一次就可以了。

另外我的页面都是集成 Common.BasePageDetail ,也可以在这里改了。

太感谢了。

还可以加 命名空间 using HBS;
  回复  引用  查看    

#9楼 [楼主] 2008-03-09 21:47 侯垒      
@金色海洋(jyk)
太客气了.好东西应该我们大家共同分享.同时也能提高一下自己.
  回复  引用  查看    

#10楼  2008-03-09 21:56 trycalm [未注册用户]
侯垒 有没有试过SZW的方法?我在devenv /setup的时候提示错误:【未能完成操作。请求的操作需要提升。】
知道什么原因吗?
  回复  引用    

#11楼  2008-03-09 21:58 imxjb [未注册用户]
嗯,这样的修改比较简单,凡是涉及模板的都可以考虑这样改
  回复  引用    

#12楼 [楼主] 2008-03-09 21:58 侯垒      
@trycalm
我没有用过你说的那种方法,我就是感觉这样挺方便所以就这样做了.
  回复  引用  查看    

老外写代码好像都喜欢加上这个~

  回复  引用  查看    

#14楼  2008-03-09 22:19 xuqiang      
直接修改ItemTemplates 的同时,也要修改ItemTemplatesCache。这样才能Get effect instantly
  回复  引用  查看    

#15楼  2008-03-09 22:34 airwolf2026      
真想看看@SZW的方法啊...好想知道啊...
  回复  引用  查看    

#16楼  2008-03-10 02:42 梁逸晨      
本来我已经对这个社区失望了,觉得这个社区没有前途了,心里充满了悲哀。但是看了你的这篇文章那个,又让我对社区产生了希望。我告诉自己这个帖子是一定要回的!
  回复  引用  查看    

#17楼  2008-03-10 08:28 eeeeee [未注册用户]
顶,必须的
  回复  引用    

#18楼  2008-03-10 08:34 redfox105      
挺有用的
  回复  引用  查看    

#19楼  2008-03-10 09:00 戏水      
不需要太高深,实用的就是非常棒的
这个方法很好, 如果您能多介绍一些其中的变量 就更好了。
  回复  引用  查看    

#20楼  2008-03-10 09:11 老钱      
高手,

  回复  引用  查看    

#21楼  2008-03-10 09:13 肯果悉      
刚刚试了,很不错!!!领教了~~~
  回复  引用  查看    

#22楼  2008-03-10 09:54 jillzhang      
非常实用
  回复  引用  查看    

#23楼  2008-03-10 09:55 杨正祎      
这个方法不错哦。
  回复  引用  查看    

#24楼  2008-03-10 10:26 zhb [未注册用户]
使用VS Add-in 也可以完成类似的功能
  回复  引用    

#25楼  2008-03-10 10:27 brave      
为什么我的VS 2005中找不到那个包呢?
  回复  引用  查看    

#26楼  2008-03-10 10:55 Howard Queen      
挺好
  回复  引用  查看    

#27楼  2008-03-10 11:07 黑羽飘舞      
简单,实用,学习了,可以用这个来干一些类似的重复劳动了。
  回复  引用  查看    

#28楼  2008-03-10 11:10 黑羽飘舞      
--引用--------------------------------------------------
SZW: @侯垒
看Cache就可以知道是缓存,其实真正源文件是在ItemTemplates里面,可以说在ItemTemplates里面修改更彻底。
当然,在Cache里面修改的短期效果是一样的,但是可能会在一些更新之后丢失哦:)
--------------------------------------------------------
的确是这样,正着手该ItemTemplates中的内容。^^
  回复  引用  查看    

#29楼  2008-03-10 11:12 非空      
真心感谢楼主分享!
  回复  引用  查看    

#30楼  2008-03-10 12:02 scotoma      
呵呵..谢谢楼主的思路.

其实如果用设计工具生成项目的话也可以更改的.
  回复  引用  查看    

#31楼  2008-03-10 12:14 突破自己      
真心感谢楼主分享.
  回复  引用  查看    

#32楼 [楼主] 2008-03-10 12:43 侯垒      
@梁逸晨
这个社区也是挺好的.我只是把我所学到的给大家分享而已.
  回复  引用  查看    

#33楼 [楼主] 2008-03-10 12:45 侯垒      
@非空
@突破自己
和大家分享的同时,自己也可以再学习一下,对自己也是一个提高.
  回复  引用  查看    

#34楼 [楼主] 2008-03-10 13:18 侯垒      
@brave
不会的.只要正常的安装就可以找到,你再确认一下你找的路径有没有问题.

  回复  引用  查看    

#35楼  2008-03-10 13:41 airwolf2026      
呵呵.看到回复里面有好多牛人,难道也第一次知道这个方法吗?
以前用vc的时候,有个VC插件:Assistant,后来VS2005出来后,就不用那个插件了,但是一直想找这样的方法.都没有找到...有的也只有2003的.当时就觉得奇怪,是不是大家都没有这样的习惯哈.
  回复  引用  查看    

#36楼 [楼主] 2008-03-10 13:45 侯垒      
@airwolf2026
我以前确实没有用过这个东西.也是后来才发现的.
  回复  引用  查看    

#37楼  2008-03-10 13:52 cengliyan [未注册用户]
楼主:

我装的是vs2005 Team Suite,用上述的方法,如果是“新建网站”的则没有问题,如果是“新建项目”则没有出现那些版本信息,请问是否有碰到此类情况?
  回复  引用    

#38楼  2008-03-10 13:58 苏景南      
VS2003里怎么没有你说的那些文件呢
帮忙啊
  回复  引用  查看    

#39楼 [楼主] 2008-03-10 13:59 侯垒      
@cengliyan
在模板中,WebForm和WinForm的模板是分开的.要分别去修改才可以.你可以再修改一下关于WinForm里面的模板就可以了.
\CSharp\2052\包括了所有WinForm文件类型的模板.

  回复  引用  查看    

#40楼  2008-03-10 14:00 slici [未注册用户]
有趣的功能
  回复  引用    

#41楼 [楼主] 2008-03-10 14:03 侯垒      
@苏景南
2003和2005不是很一样.我没有装2003不知道里面的文件夹都在那.你可以参考一下这个.
http://myth.cnblogs.com/archive/2005/12/26/304864.html
  回复  引用  查看    

#42楼  2008-03-10 14:04 SZW      
@侯垒
ItemTemplates里面是只读.zip文件,不敢用管它,大胆改就行了。当然,我的建议是保留好原有的模板,如果不同项目的注释内容不太一致的话,为不同的项目创建几套不同的模板,需要用的时候覆盖一下,不然有时候修改和更新这些注释也是件体力活哦:)
PS:提前做好备份哦~~

@trycalm
在VS命令提示符下面用devenv /setup 重新配置VS的设置,没碰到过你这样的问题哦...
  回复  引用  查看    

#43楼 [楼主] 2008-03-10 14:10 侯垒      
@SZW
谢谢了.
  回复  引用  查看    

#44楼  2008-03-10 14:15 SZW      
@侯垒
补充一下,我说的几套模板的“覆盖”不是非要用文件覆盖,你可以在注册表中来“软”的,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\VSTemplate 下面,可以设置自己的模板路径
(上面的9.0\VSTemplate 可以根据自己的VS版本更改(9.0对应VS2008),按照楼主的应该是8.0,即HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\下面找)

这样只要自己写几个.reg文件,在编写不同的项目的时候运行一下.reg就行了
  回复  引用  查看    

#45楼 [楼主] 2008-03-10 14:21 侯垒      
@SZW
哥们真是厉害呀!我开始也没有想太多,没有想到还有这么多的方法,如果是这样的话就更好了.
同时表示感谢.
  回复  引用  查看    

#46楼  2008-03-10 14:24 airwolf2026      
@SZW 果然厉害哈.感谢楼主和@SZW分享哈
我另外想了一个方法.就是:这些文件修改好后.做个.bat文件.即便系统重装之类的.只要运行下这个文件就可以了,当然修改的文件要和.bat一起保存.那样就可以不怕...Cache目录丢失情况.毕竟执行devenv /setup 重新配置VS这条命令还是要花一些时间滴.
  回复  引用  查看    

#47楼 [楼主] 2008-03-10 14:28 侯垒      
@airwolf2026
这个也挺好,即使系统出问题也不怕了,也可以到处移植.
  回复  引用  查看    

#48楼  2008-03-10 14:32 SZW      
@airwolf2026
我的习惯是把模板和.reg文件和项目放在一起(包括很多.sql文件等等,毕竟都是resource的一个部分),或者整理到一个和系统、VS目录都没有关系的文件夹,这样可以保证“项在模在”:)

另外devenv /setup 好像也不用多少时间吧,当然如果用我这个.reg的办法,更新的时间就可以忽略不计啦^_^
  回复  引用  查看    

#49楼  2008-03-10 17:59 任力      
学习了,SZW一看就是创新型人才.一块顶了
  回复  引用  查看    

#50楼  2008-03-10 18:54 Kingna [未注册用户]
@SZW
我曾經有一次丟失了模板,就是運行devenv /Setup加回來的。當時也靈光一現在
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\CSharp\1033下面修改過部分.zip文件,發現是可以修改的,當然也可以先建一個文件夾,命名你公司或你自己的專案模板的。呵呵...
只是Devenv /setup需要點時間,算是些小缺憾....

  回复  引用    

#51楼  2008-03-10 18:56 凯锐      
暈,發現自己沒有登錄評論的。
  回复  引用  查看    

#52楼  2008-03-10 19:20 跟着心走      
不错啊~作个记号..
  回复  引用  查看    

#53楼  2008-03-11 01:49 一抹微蓝      
学习了,很不错。
  回复  引用  查看    

#54楼  2008-03-11 09:00 成人 [未注册用户]
不错啊,哈哈
  回复  引用    

#55楼  2008-03-11 09:07 王奇      
这个技巧很实用,顶一个!
  回复  引用  查看    

#56楼  2008-03-11 10:39 SZW      
@Kingna
ItemTemplates下面的是模板的原文件,是真实的.zip文件(只读),而ItemTemplatesCaChe下面是被释放出来的缓存,用于VS直接添加文件时提供实际的模板,如果要修改当然最好直接修改ItemTemplates啦^_^另外见文件夹也是可以的,比如VS2008下面的MVC预览版就是这么加进去的。

对于Devenv /setup我倒觉得有时候花的时间还没有编译一个大点的项目时间长,所以心里上能够接受:)当然能更快一点是更好啦,所以后来想出来用.reg的方法修改注册表,这样应该是效率和安全性两不误了。
  回复  引用  查看    

#57楼 [楼主] 2008-03-11 10:47 侯垒      
@SZW
谢谢提供更详细的方法.
  回复  引用  查看    

#58楼  2008-03-11 12:58 wenanry      
实用,已经修改了Class.cs文件
  回复  引用  查看    

#59楼  2008-03-12 05:36 Vincent Yang      
我晕,不用都这么惊奇吧?VS 本身就可以创建自己的Template,然后Export出来,真有点少见多怪了。。
http://msdn2.microsoft.com/en-us/library/eehb4faa(VS.80).aspx

  回复  引用  查看    

#60楼 [楼主] 2008-03-12 13:41 侯垒      
@Vincent Yang
以前确实没有见过这个东西.你发的里面讲的很详细.
谢谢提供更详细的解释.
  回复  引用  查看    

#61楼  2008-03-13 19:49 Vincent Yang      
--引用--------------------------------------------------
侯垒: @Vincent Yang
以前确实没有见过这个东西.你发的里面讲的很详细.
谢谢提供更详细的解释.
--------------------------------------------------------
要不是你发这个帖子,有这么多留言我都从来没关心过这个东西,可能在国内的人用的不怎么多吧,因为我在国外,我每到一个公司它们都有自己的Custom Template,你写任何代码的时候,都是直接从公司的template创建一个文件,因为里面的规范都定义好了,而且很方便带走,只要到你的My Document下面,找到VS 2005 or VS 2008文件夹打开就能看到里面的template了,当然前提是你创建好template之后要Export出来。
  回复  引用  查看    

#62楼  2008-03-13 19:52 Vincent Yang      
@侯垒
另外,我从来都不建议修改VS ItemTemplate,最大的问题就是有的时候丢了,或者被还原了很麻烦还给一点点加进去,因为别人也可能直接修改这个文件,所以最好的办法就是写自己的template,然后存到自己的My doucment ->vs folder下
  回复  引用  查看    

#63楼 [楼主] 2008-03-14 08:17 侯垒      
@Vincent Yang
我对国外的情况不是很了解,参与的项目也不是很多,这方面的经验还要向你请教.
以前确实很少用这个功能.但是后来发现很有用,可以省好多重复性的工作,所以就发表出来了.
谢谢,又提供了更好的方法和建议.让我受益匪浅.
  回复  引用  查看    

#64楼  2008-03-14 12:19 Vincent Yang      
@侯垒
其实还有很多更好的,例如创建自己的code snippet,也都是放到my document\vs 2008 or 2005这个folder里面的,这样可以减少很多写code的时候工作,例如我创建了protect的property,vs.net里面只有Prop这个snippet用来创建public property的,所以我就自己写一个PtProp,这样就很容易区分和生成protect property了。希望能对大家有用
  回复  引用  查看    

#65楼 [楼主] 2008-03-14 14:38 侯垒      
@Vincent Yang
我不知道你让面所说的创建完模板,把它放到My doucment ->vs folder,怎样才能实现VS对它的调用呢!或者说是用SZW 所提供的那种方法(来修改注册表)
谢谢.
  回复  引用  查看    

#66楼 [楼主] 2008-03-15 17:28 侯垒      
@VincentZ
其实这个不仅可以加这个版权信息,还可以加入其它的信息,比如:一些开发过程中的规范.就像 Vincent Yang 所说的.
  回复  引用  查看    

#67楼  2008-03-15 19:40 Vincent Yang      
@侯垒
但你创建了模板以后,把它放在C:\Users\V\Documents\Visual Studio 2008\Templates\ItemTemplates下面,然后当你Add new item的时候,最下面就会显示出你自己定义的了
  回复  引用  查看    

#68楼 [楼主] 2008-03-15 19:56 侯垒      
@Vincent Yang
原来是这样呀!我试过了很好用.这种方法更方便呀!在不损坏以前模板的前提下可以自由的选择模板.
谢谢.
  回复  引用  查看    

#69楼  2008-03-15 22:35 Vincent Yang      
@侯垒
呵呵,没错地,可能因为你平时都是用一台机器开发,或者你一个人用那个机器,又或者你们不同的客户并不关心这些,所以修改原模板你没有感觉会有多少麻烦。但是当你的客户要求跟他们的规范一致的时候,你就给重新打开那些模板,修改成这个客户需要的,如果有几百个客户都有这种要求,我想你可以想象得到会是什么样的结果吧。。。又或者一个机器不是你一个developer用,其他的developer想用他们自己的模板,那样他就把你的修改了。等你在回来的时候还给重新修改,这样又势必会造成不必要的麻烦,所以放在你自己的my document下再合适不过了。呵呵,平时看到东西的时候多看研究一下还是有好处的。
  回复  引用