如何將Option Strict的設定保持為On(Add-In技術)

來源:互聯網
上載者:User
在一次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 OptionStrict = "On".
         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的狀態。

現在可以開始構建add-in了;你可以通過構建VBOptionStrictOnSetup項目時建立的Setup.ext 檔案來安裝或者卸載它。你可以在Tools | Add-in Manager中啟用或禁止這個add-in。如果你還想把Option Strict設定成Off(在不卸載或者禁止VBOptionStrictOn add-in的條件下),你可以通過在一個VB 模組的代碼頂部加一個Option Strict Off語句來實現。

要瞭解Add-in Wizard的用法說明,你可以參考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxconcreatingaddin.asp。 要瞭解更多建立Visual Studio .NET add-in 資料,請參考http://msdn.microsoft.com/vstudio/downloads/automation.asp 和http://groups.yahoo.com/group/vsnetaddin.

關於作者:
Scott T. Hutchinson是一名微軟認證解決方案開發專家,也是獨立諮詢公司Clear Lake Services in Westlake Village, Calif的創始人。Scott 還是Los Angeles .NET Developers Group的外事主管(www.ladotnet.org)。你可以通過hutch@clearlakeservices.com 或 www.clearlakeservices.com 聯絡他。

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。