🤖IDE Objelerine Erişme | VSIX
Visual Studio 2019 eklentisi ile IDE objelerine erişme otomasyonu
Last updated
Visual Studio 2019 eklentisi ile IDE objelerine erişme otomasyonu
Last updated
© 2024 ~ Yunus Emre Ak ~ yEmreAk
💠 IDE objelerine erişmek için EnvDT80.DTE2
objesi kullanılır
🍎 await <asyncServiceProvider>.GetServiceAsync(typeof(DTE)).ConfigureAwait(false) as DTE2
kodu ile DTE objesi alınır
📂 dte2.ItemOperations
kodu ile dosya açma, ekleme ve benzeri işlemler IDE ile otomatikleştirilebilir
dte2.ActiveDocument
IDE üzerinde aktif olan doküman
dte2.ActiveDocument.ProjectItem
Aktif dokümanın proje objesi (kaynak kodlara vb. erişim)
dte2.ToolWindows.SolutionExplorer.SelectedItems
Solution Explorer üzerindeki seçilen dosyalara erişiriz
dte2.ExecuteCommand("<komut>", "<argümanlar>")
Command Window üzerinde komut çalıştırır
dte2.ItemOperations.AddExistingItem(<filepath>)
Projeye var olan dosyayı ekler ve yolun -proje dizininde olduğundan- günceller
dte2.ItemOperations.OpenFile(<filepath>)
IDE ile dosyayı açar, projeye dahil etmem, kaynak kod derlenmez (FileCodeModel
olmaz)
ProjectItem
💡 Solution içerisinde yer alan ve derlenen proje dosyasını tutan objedir
🤖 Dosya üzerindeki otomasyon işlemleri bu obje ile yapılır
📂 Dosya işlemleri <projectItem>.Delete()
, <projectItem>.Save()
, <projectItem>.Remove()
gibi işlemler buradan yapılır
👨💻 Dosya içerisindeki kaynak kod modeline <projectItem>.FileCodeModel
şeklinde erişebiliriz
FileCodeModel
💡 IDE üzerinde derlenen (build) proje dosyaları (ProjectItem
) kaynak kodlarını tutan modeldir
🍏 CodeElements
olan kod elemanlarını tutan objelerden oluşur
🍎 CodeNamespace
, CodeElement
, CodeClass
, CodeFunction
gibi kaynak kod özelliğine göre obje içerir
👨💻 <codeNamespace | codeClass >.Children
komutu ile namespace veya class içerisindeki kaynak kod objelerine erişilir
📢 Derlenmemiş dosyalarda - yani projeye dahil olmayan harici dosyalar olan
Miscellaneous
dosyalarında -FileCodeModel
olmaz
CodeElement
🐥 CodeElement
objelerinin metinlerine <codeElement>.GetStartPoint(vsCMPart.vsCMPartBody).CreateEditPoint()
şeklinde erişilir
📌 GetStartPoint(<vsCMPart>)
ile enum
değerleri olarak tanımlanan alanların başlangıç konumu alınır
🔤 CreateEditPoint
ile konum bilgisinden içerik metnine erişilir
İçerik metni üzerinden GetText(<point>)
, ReplaceText(<point>)
gibi komutlar metni değiştirebiliriz
📝 Obje sonuna kadar almak veya değiştirmek için <codeElement>.EndPoint
değeri kullanılır