התאמת Visual Studio לצורת העבודה שלך

9 באוקטובר 2007

אצלנו בעובדה נתקלתי בתופעה מוזרה, אנשים אוהבים לכתוב מסמכים.ואני לא. לאחרונה התבצעה אצלנו עבודה לכתיבת מסמך סטנדרטים לפיתוח תוכנה, המסמך מכיל הגדרה למבנה מחלקות שמות מתודות וכו'. במקביל לכתיבת המסמך חיפשתי את הדרך לגרום לסטנדרטים להיות חלק מצורת העבודה שלנו. ואז החלטתי לשנות את התבניות ברירת המחדל של הVisual Studio. לצורך השינוי פתחתי את הספריה: C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates בספריה מצאתי את ספריה עבור כל סוג פרוייקט, אני בחרתי בCSharp ובשפה שבה אנחנו עובדים 1033 (אנגלית), בספריה יש קובץ ZIP עבור כל סוג Item שאפשר ליצור בVS. לקחתי את קובץ Class.zip ובתוכו מצאתי את הקבצים:Class.vstemplateClass.cs פתחתי...
אין תגובות

.Net Memory Problems

30 בספטמבר 2007

לאחרונה נתקלתי בתופעה מוזרה, פתחתי אפליקצית .net נקיה וראיתי שהיא תופסת ~8MB. לאחר מכן השתמשתי במחלקות סטנדרטיות של .net והזיכרון שלי הגיע ל20MB. התחלתי לנסות לברר למה זה והבנתי שמדובר בטעינה של הAssemblyים של .net.אבל עדיין זה נראה לא סביר שאפליקציה לא משחררת את הזיכרון לאחר שהיא טוענת אותו. לאחר חיפוש באינטרנט ראיתי את המאמר הבא: Minimize .NET Memory Consumption המאמר מתאר שימוש בWinAPI לצורך צמצום הזיכרון שמוקצא לאפליקציה ע"י הwindows. מה שבופעל קורה זה שבתהליך טעינת הAssembly הwindows מקצה הרבה זיכרון לאפליקציה, אבל לאחר השימוש בזיכרון הוא לא מוחזר למערכת הפעלה אלא נשאר אצל האפליקציה למקרה שהיא תצטרך...
7 תגובות

How to add hot keys to your program.

19 באוגוסט 2007

בהמשך לפוסט על בדיקת שגיאות כתיב בכל מקום. הבעיות שהתמודדתי איתן היו:1. הפעלה של התוכנית ע"י צירוף מקשים כאשר האפליקציה שלי לא נמצאת בפוקוס.2. קבלה של החלון שעכשיו המשתמש נמצא בתוכו ע"י שימוש בWin32 Api.3. קבלת הטקסט מתוך החלון של המשתמש. הפתרונות לבעיה מספר אחת: עם הבעיה התמודדתי בהתחלה ע"י שימוש בספריה ManagedHooks שמאפשרת רישום לאירועי המערכת. כאשר האירוע מתקבל בתוכנה שלי, אני בודק האם המקש שנלחץ הוא המקש שאני מחכה לו. במידה וכן, אני מפעיל את בדיקת השגיאות. לאחר חיפוש נוסף מצאתי את הפתרון השני, שהוא לרשום למערכת הפעלה את צירוף המקשים שלי כHotKey ע"י RegisterHotKey למידע בנושא...
אין תגובות

Get User Focus Window From Other Program

בהמשך לפוסט על בדיקת שגיאות כתיב בכל מקום. הבעיות שהתמודדתי איתן היו:1. הפעלה של התוכנית ע"י צירוף מקשים כאשר האפליקציה שלי לא נמצאת בפוקוס.2. קבלה של החלון שעכשיו המשתמש נמצא בתוכו ע"י שימוש בWin32 Api.3. קבלת הטקסט מתוך החלון של המשתמש. והפעם קבלה של חלון שעכשיו המשתמש נמצא בתוכו. הבעיה השניה נראתה לי פשוטה. מנסיוני, ידעתי שWindows API מכיל את המתודה GetFocus בגלל זה ניסיתי את הקוד הפשוט הבא: public static extern IntPtr GetFocus(); public void TryGetFoucsWindow() {  MessageBox.Show(GetFocus().ToString()); } אבל בכל פעם שבדקתי תמיד חזר לי הערך 0.לאחר מחקר...
אין תגובות

GetWindowText the working way

בהמשך לפוסט על בדיקת שגיאות כתיב בכל מקום. הבעיות שהתמודדתי איתן היו:1. הפעלה של התוכנית ע"י צירוף מקשים כאשר האפליקציה שלי לא נמצאת בפוקוס.2. קבלה של החלון שעכשיו המשתמש נמצא בתוכו ע"י שימוש בWin32 Api.3. קבלת הטקסט מתוך החלון של המשתמש. והפעם קריאה של הטקסט מתוך החלון. לכאורה, עוד משימה פשוטה במיוחד, כיוון שקיימת פונקצית API בשם GetWindowTextהשם מבטיח, אבל עם הבטחות לא הולכים למכולת. ניסיתי לבצע את הקריאה ל GetWindowText, עבור רוב החלונות זה באמת עבד. כאשר עמדתי על כפתור, קיבלתי את הערך שלו, גם כאשר עמדתי בתוך חלון רגיל, אבל בתוך תיבת טקסט זה פשוט לא עבד....
אין תגובות

Check spelling every where

בהמשך לפוסט על בודק השגיאות בVS הגיעו אלי פניות מגורמים רבים שסיפרו לי שהם משתמשים בבודק השגיאות, וכמות שגיאות הכתיב ירדו, אבל עדיין הם נתקלים בהרבה חלונות שבהם הם  לא יכולים לבדוק את השגיאות, בגלל זה יש להם שמות קבצים עם שגיאות, ואפילו נוצרים פרוייקטים חדשים עם שגיאות כתיב. אז החלטתי לפתור את הבעיה אחת ולתמיד ולהוסיף את היכולת לבדיקה של שגיאות כתיב לכל חלון במחשב. הבעיות שהתמודדתי איתן היו:1. הפעלה של התוכנית ע"י צירוף מקשים, כאשר האפליקציה שלי לא נמצאת בפוקוס.2. קבלה של החלון שעכשיו המשתמש נמצא בתוכו ע"י שימוש בWin32 Api.3. קבלת הטקסט מתוך החלון של...
אין תגובות

How To debug a two projects together

4 באפריל 2007

בתחילת הפיתוח של הפרוייקט שלנו הגדרנו בsolution אחד את הפרויקטים השונים כאשר היה פרויקט WEB ולכל שיכבה היה פרויקט משלה בנוסף הגדרנו פרויקט infrastructure שהכיל קוד שלא היה קשור ספציפית לפרויקט שלנו, לאחר שהצוות התחיל לפתח מערכת נוספת במקביל. הוחלט להוציא את התשתיות של שני הפרויקטים לsolution נפרד ושני המערכות יבצעו reference לפרויקטי התשתית. ובאמת זה מה שעשינו והגדלנו והוספנו רישום אוטומטי לGAC של DLL התשתית בשביל למנוע בלגן עם ריבוי גרסאות והעתקות של הDLLים. ואז ביום בהיר(למרות שהיה יום גשום נהוג לכתוב יום בהיר) ניסיתי לבצע דבאג למתודה שכרגע סיימתי לכתוב, אני רגיל לכתוב את המתודה ולהשתמש בה...
4 תגובות

From string code to Typed Code in ESRI World

לפני כ4 חודשים עברתי לצוות שמפתח מערכות GIS על גבי התשתיות של חברת ESRI. אנחנו בפרויקט שלנו עובדים מול הArcGis Server שהוא מוצר הדגל של ESRI, הAPI לכל הפעולות נקרא Arc Objects שזה בעצם אוסף של רכיבי COM שחיים על השרת ומאפשרים לך לעשות כמעט הכל מול כלי ESRI. במסגרת החפיפה העבירו לי ולחברי לצוות סדנה שעסקה בכתיבת קוד Arc Objects בNET. מרבית הסדנה עסקה בכמה שלא נוח לעבוד עם Arc Objects ודאגו להזכיר לנו שאי אפשר לבצע new למחלקות של Arc Object וחייבים לבצע יצירה של אובייקטים ע"י קריאה לServerContext.CreateObject, לי בתור תוכניתן asp החתימה נראתה מוכרת כי היא...
תגובה אחת

VS Check Spelling Add ins

אחת הבעיות בעבודה בצוות זה שמשהו צריך לקרוא את הקוד שלך. הרבה נכתב על כללים לכתיבת קוד קריאה, אני תמיד מנסה לכתוב קוד ברור אבל מאז ומעולם אני כותב בשגיאות כתיב, לי זה לא מפריע כי אני מבין מה שאני כותב אבל לא כולם כמוני. בצוות הקודם שלי שגיאות הכתיב שלי הפריעו מאוד לחברי הצוות, אז הייתי מחזיק תמיד WORD פתוח ובודק שם את המילים שלא הייתי בטוח בהם, אבל זה לא הספיק בגלל שלא תמיד הייתי בודק בWORD והיו חיבורים מילים שהWORD לא ידע לפרק. ואז באחד הערבים הקרים החלטתי לכתוב את הAdd in הראשון שלי לVS...
אין תגובות