DTE BeforeExecute and AfterExecute Command Events

28 בנובמבר 2012

ישנם הרבה אירועים שניתן להירשם אליהם כשמפתחים VS PlugIn, כמובן שלא לכל האירועים שבאמת קיימים ב – VS יש אירוע שניתן להירשם אליו כדי לקבל את המידע, לדוגמא AddExistingItem ועוד הרבה אחרים. בשביל זה קיימים האירועים AfterExecute, BeforeExecute, שיופעלו בכל אירוע כלשהו שמתרחש. לאחר שנירשם אליהם (נמצאים תחת CommandEvents של המאפין Events של ה – DTE) המתודות יראו כך. EnvCommandEvents_BeforeExecute(string Guid, int ID, object CustomIn, object...
תגיות: , , ,
אין תגובות

Reflection Demo

23 בנובמבר 2012

בפוסט זה נראה דוגמא לשימוש ב – Reflection, זה לא קוד אמיתי שנשתמש בו, אלא יותר כדי להבין ולראות איך עובדים עם Reflection. נניח שיש לנו כמה מחלקות של Logging ונרצה לקבל את היכולת לשנות דינמית את סוג ה – Logger שאיתו אנחנו עובדים, נוכל להשתמש ב – Reflection כדי לעשות זאת. יהיה לנו Interface שיגדיר מהו Logger public interface ILogger {...
תגיות: ,
תגובה אחת

INotifyPropertyChanged and CallerMemberName

13 בנובמבר 2012

הרבה מאפליקציות UI משתמשות ב – INotifyPropertyChanged כדי לדעת האם מאפיין כלשהו השתנה, בדרך כלל המחלקה תראה כך: class MyClass : INotifyPropertyChanged {     public event PropertyChangedEventHandler PropertyChanged;       private string title;     public string Title     {...
תגיות: , ,
7 תגובות

knockout on property change event

6 בנובמבר 2012

התבקשתי לכתוב קוד אשר ישמור בצד את המאפיינים של אובייקט ko, אשר השתנו לאחר שהדף נטען (כאשר המשתמש משנה את הערך) הקוד המלא לצפייה נניח שהמודל שלנו נראה כך: viewModel = {     Id: ko.observable(1),     Title: ko.observable("Shlomo") }; ...
תגיות: , , ,
אין תגובות

Get FilePath from ITextBuffer or ITextView

כשכותבים PlugIn ל – Visual Studio לפעמים נרצה להתייחס לחלון שבו המשתמש כותב טקסט, ניתן להירשם לאירועים שונים (שינוי טקסט, שינוי מיקום מצביע העכבר וכד’) האובייקט שנקבל יכול להיות ITextBuffer או ITextView, במקרה שנרצה להוציא את שם הקובץ הפיזי שאנחנו עובדים איתו, נצטרך לכתוב מתודה כזו: private static bool InternalGetFilePath(ITextBuffer textBuffer, out string filePath) {     ITextDocument doc; ...
תגיות: , , ,
אין תגובות

Add Reference from code

5 בנובמבר 2012

במידה ונכתוב PlugIn ל – Visual Studio ונרצה להוסיף Reference מקוד, נוכל לעשות זאת בדרך הבאה. ראשית נצטרך לקבל אובייקט מסוג VSProject2 (יושב ב – VSLangProj80.dll), נוכל לקבל מתוך המאפיין Object שנמצא באובייקט Project. VSProject2 vsProject = (VSProject2)project.Object; כעת נוכל להשתמש באחת מהפונקציות של הוספת Reference. ...
תגיות: , , ,
2 תגובות

How do I get the current Item Template Name

3 בנובמבר 2012

כתבתי כיצד לקבל את סוג הפרוייקט האחרון שנוצר, כפי שתיארתי זה נשמר ב – Registry. מעבר לסוג הפרוייקט, לפעמים נרצה לדעת גם מה סוג ה – Item האחרון שנוצר, זהו מידע שלא נשמר ב – Registry אלא בזיכרון של Visual  Studio. לצערי לא מצאתי בעזרת המחלקה ProjectItem את ה – Template של אותו Item, והייתי חייב להשתמש ב – Reflection כדי למצוא את הנתון. ראשית נצטרך לקבל את אובייקט מסוג IVsSolution2. ServiceProvider...
אין תגובות

Visual Studio MessageBox style

1 בנובמבר 2012

כולם מכירים את החלון ש – Visual Studio משתמש בו כדי להציג הודעות.     בתוך PlugIn שאני כותב, התעורר הצורך להציג הודעות למשתמש, כמובן שרצינו שזה יראה כמו החלונות של Visual Studio, אבל לצערי לא מצאתי בעזרת האובייקטים של ה – DTE את הדרך לעשות זאת. (ניתן להוריד את הקוד מכאן) לכן כתבתי חלון קטן, שמחקה את הצורה שבה זה נראה, בנוסף מאפשר להוסיף דינמית לחצנים בתחתית המסך. השימוש יראה כך: ...
אין תגובות