SQL Server administration and T-SQL development, Web Programming with ASP.NET, HTML5 and Javascript, Windows Phone 8 app development, SAP Smartforms and ABAP Programming, Windows 7, Visual Studio and MS Office software

Kodyaz Development Resources

Development resources, articles, tutorials, samples, codes and tools for .Net, SQL Server, Windows, Windows Phone, SAP and ABAP, like SAP UI5, Screen Personas, etc.






.NET Framework, ASP.NET

ASP.NET, Windows Forms, Controls, .NET Framework and Visual Studio Articles

ASP.NET Forums

Visual Studio Forums

.NET Development Blog

Certification Exams Blog




Visual Studio .NET 2003 Macros - Microsoft Visual Studio Macros 7.1 ve DTE


Visual Basic 2005 Integrated Development Environment (VB IDE) ile gelen yeniliklerden birisi de IntelliSense Code Snippets ve Code Snippets Manager. Yaklaşık 500 kadar önceden hazırlanmış kod parçası barındıran IntelliSense Code Snippets developer'lar için tekrarlanan kodları yazmak açısından büyük zaman kazandıracağı gibi temel fonksiyonları barındırması ile de en çok kullanılan kod parçaları kolayca yazdığımız kod içine dahil edebileceğiz. Peki Visual Studio .NET 2003 (VS.NET 2003) benzer bir özelliği barındırmıyor muydu? Visual Studio .NET 2003 içinde yer alan Macro Explorer 'dan haberdar mıydınız? Macro Explorer hazır pek çok fonksiyonun VS.NET 2003 içinde olduğunu görebilirsiniz. Aynı zamanda bu makroları güncelleyebilir isterseniz yenilerini de ekleyebilirsiniz.

Macro Explorer'ı açmak için VS.NET IDE içinde Alt + F8 kısa yol tuşunu kullanabilirsiniz. Veya menüden "View", "Other Windows" ardından "Macro Explorer" yolunu takip edebilirsiniz.

İsterseniz Macro Explorer içindeki MyMacros bölümünü expand edelim ve buraya yeni bir modül ekleyelim. Kendinize ait bir macro kütüphanesi geliştirebilirsiniz. Eklediğiniz yeni modül içinde size ait makro kodlarını saklayabilirsiniz. 

Aşağıda basit bir iki örnek ile Microsoft Visual Studio Macros 7.1 ve DTE (envdte veya Microsoft Development Environment 7.0) objesini kullanmaya başlayabilirsiniz.

DTE objesi Visual Studio .NET IDE (Integrated Development Environment) 'yi temsil eder. DTE objesini projenize dahil etmek istiyorsanız Solution Explorer penceresinde References bölümünde Add Reference ile envdte (.Net tab'ı altında) veya Microsoft Development Environment 7.0 (COM tab'ı altında) seçerek projenize referans olarak ekleyebilirsiniz.

Neyseki bizim böyle bir ihtiyacımız yok. Visual Studio Macros ile kolayca makrolarımızı yazabilir ve güncelleyebiliriz. Tüm macro projeleri EnvDTE.dll assebly'sini içerirler.





Bir web projesi geliştiriyorsanız web formunuzun Page_Load event'i içinde kimbilir kaç kez aşağıdaki kod parçasını yazmışsınızdır.

if (IsPostBack)
{
}
else
{
}

Peki bunu bir makro hazırlayarak nasıl otomatikleştirebiliriz?

Alt + F8 ile geliştirme ortamınızda açılacak Macro Explorer penceresi içinde kendi makro modülünüzü bulun ve "New macro" seçimini yapın. Bu seçim ardından Microsoft Visual Studio Macros 7.1 açılacaktır.

Editör default olarak

Sub Macro1()

End Sub

İsminde bir makroyu sizin adınıza oluşturmaya başlamışdır. Aşağıdaki kod parçasını onun yerine yazın.

Sub IsPostBack()

    Dim ts As TextSelection = DTE.ActiveWindow.Selection

    ts.Text = "if (IsPostBack)"
    ts.NewLine()
    ts.Text = "{"
    ts.NewLine()
    ts.Indent(4)
    ts.Text = "// PostBack"
    ts.NewLine()
    ts.Indent(4)
    ts.NewLine()
    ts.Text = "} else {"
    ts.NewLine()
    ts.Indent(4)
    ts.Text = "// First Load"
    ts.NewLine()
    ts.NewLine()
    ts.Text = "}"
    ts.LineUp(False, 1)
    ts.Indent(4)

End Sub

Şimdi bir web formu açarak, Page_Load için de Alt + F8 ile açılan pencerede macro'nuza çift tıklayarak IsPostBack ismindeki kod parçasını kodunuzun içine dahil edebilirsiniz.

İkinci bir örnek olarak da aşağıdaki koda bakabiliriz. Bu kod yardımı ile de kodlanmakta olan sayfanın uzantısına bakılarak development için kullanılan dil belirlenmeye çalışılmakta.

Sub CodingLanguage()

    Dim doc As Document = DTE.ActiveDocument

    Dim docName As String = doc.Name
    Dim docType As String = ""

    If docName.EndsWith(".vb") Then
       docType = "vb"
    ElseIf docName.EndsWith(".cs") Then
       docType = "cs"
    ElseIf docName.EndsWith(".txt") Then
       docType = "txt"
    Else
       docType = "none"
    End If

    Dim ts As TextSelection = DTE.ActiveWindow.Selection
    ts.Insert(docType)

End Sub

Yukarıdaki kod parçasını bir fonksiyon haline getirerek kendi yazdığınız makrolarınızı daha akıllı kod parçacıkları haline getirebilirsiniz.

Önce modül içinde bir enum tanımlayarak olası dil seçeneklerini bu enum'a dahil edelim.

Enum Languages
    VB = 1
    CS = 2
    TXT = 3
    None = 4
End Enum

Ardından fonksiyonumuzu modüle ekleyelim.

Function CodeLanguage() As Languages

    Dim doc As Document = DTE.ActiveDocument

    Dim docName As String = doc.Name
    Dim docType As String = ""

    If docName.EndsWith(".vb") Then
       docType = Languages.VB
    ElseIf docName.EndsWith(".cs") Then
       docType = Languages.CS
    ElseIf docName.EndsWith(".txt") Then
       docType = Languages.TXT
    Else
       docType = Languages.None
    End If

    Return docType

End Function

En son olarak bu fonksiyondan yararlanacağımız bir makro hazırlayalım.

Sub ScriptAuthorLabel()

    Dim strComment As String

    Select Case CodeLanguage()
    Case Languages.VB
       strComment = "'"
    Case Languages.CS
       strComment = "//"
    Case Languages.TXT
       strComment = "--"
    End Select

    Dim NextVersionSQLScriptStart As String = strComment & "********************** ERALPER ************* "
    Dim NextVersionSQLScriptEnd As String = strComment & "********************** ERALPER END ********* "

    Dim ts As TextSelection = DTE.ActiveWindow.Selection

    ts.NewLine()
    ts.Insert(NextVersionSQLScriptStart)
    ts.NewLine(2)
    ts.Insert(NextVersionSQLScriptEnd)
    ts.NewLine()

End Sub

Visual Studio .NET 2003 IDE içinde Microsoft Visual Studio Macros 7.1 ve DTE kullanarak hazırlayabileceğimiz pek çok code snippets vardır.

Sizlerden de site Kodyaz içinde geniş bir macro kütüphanesi oluşturabilmek için hazırladığınız örnekler ile katılımınızı bekliyorum.

Şimdiden teşekkürler.












Copyright © 2004 - 2017 Eralper YILMAZ. All rights reserved.
Community Server by Telligent Systems