曙海教育集团论坛开发语言培训专区VB语言 → 如何将Option Strict的设置保持为On(Add-In技术)-.NET教程,VB.Net语言


  共有6942人关注过本帖树形打印

主题:如何将Option Strict的设置保持为On(Add-In技术)-.NET教程,VB.Net语言

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
如何将Option Strict的设置保持为On(Add-In技术)-.NET教程,VB.Net语言  发帖心情 Post By:2010-12-14 12:21:55

在一次vsm的专访中,dan appleman提到:“我希望visual studio 项目能够在缺省状态下将option strict设置为on,而无需用手工编辑向导模板。”可能很多程序员都会认同dan的观点-- 在vb.net实现中,将option strict off设置成缺省状态是mircosoft一大错举。但事实上你不必非得按照microsoft的这一设定。在以下这个技巧中,我会介绍如何建立一个自动将option strict设置为on的add-in方法(用这个方法你可能都会忘记如何使用手动添加了)。

第一步是通过使用add-in wizard来建立一个新的visual studio add-in 项目,并将其命名为vboptionstricton。当向导建好了这个add-in 并打开了connect.vb模块的代码窗口之后,你可以在这个connect类中声明两个类级(class-level) 变量。你需要将向导定义的这两个变量:dim applicationobject as envdte.dte
dim addininstance as envdte.addin

用以下两个变量声明来取代:private _app as envdte.dte
private withevents _solutionevents as solutionevents

接下来,在public onconnection 的事件处理(event handler)中将向导生成的代码:applicationobject = ctype(application, envdte.dte)
addininstance = ctype(addininst, envdte.addin)

用以下两个给变量赋值的语句来取代:_app = ctype(application, envdte.dte)
_solutionevents = _app.events.solutionevents

然后,在solution explorer中选择vboptionstricton项目,并通过在add reference 对话框的.net tab里选择vslangproj assembly来添加一个reference。同时,在connect.vb模块的代码顶部加上imports vslangproj语句。 vslangproj assembly提供了名为prjoptionstrict的列举(enumeration),其中包含optionstrict的可能值(on, off)。

现在你可以开始将option strict设置成on了。整个add-in 过程包括四个加入到connect类的小的vb.net子过程。add-in过程不需要用户进行干涉因而无需使用用户界面。前两个过程是同一个方法的重载(overload):public sub setoptionstricton()
   dim proj as project
    check and set optionstrict for each project in
    the open solution by calling an overloaded
    version of this sub.
   for each proj in ctype(_app.getobject("vbprojects") _
      , projects)
      call setoptionstricton(proj)
   next
end sub

public sub setoptionstricton(byref proj as project)
   dim propoptionstrict as [property]
   with proj
      propoptionstrict = _
         .properties.item("optionstrict")
       if optionstrict not "on"...
      if ctype(propoptionstrict.value, _
         prjoptionstrict) <> _
         prjoptionstrict.prjoptionstricton then

          set opti.
         propoptionstrict.value = _
            prjoptionstrict.prjoptionstricton
         .save() save changes to the project.
      end if
   end with proj
end sub

通过使用上述重载,你可以得到两种方法(用最少的重复代码):一个将open solution中所有项目的option strict设置成on的不带参数的方法和另一个将单独指定项目中的option strict设置成on的带proj参数的方法。

接下来建后两个过程。每个过程各调用一个setoptionstricton方法:private sub _solutionevents_opened() _
   handles _solutionevents.opened
      call setoptionstricton()
   end sub

   private sub _solutionevents_projectadded( _
      byval project as envdte.project) handles _
      _solutionevents.projectadded

      call setoptionstricton(project)
   end sub

打开visual studio中的一个solution将会触发第一个事件处理(_solutionevents_opened),激活add-in会确保当前vb项目中的option strict被设置成on。这些项目可能是在你安装add-in之前就建好的,也可能是从一个没有装这个add-in的其他开发者那里拿来的。在将一个新的或是以前建好的项目加入到当前的solution中后会触发另一个事件处理(_solutionevents_projectadded),当你用项目向导在新建的solution中加入一个项目模板时也会触发这一事件。这一处理确保在所有新建vb项目中的option strict是on的状态。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

如何将Option Strict的设置保持为On(Add-In技术)-.NET教程,VB.Net语言








签名