none
Visual C++ 2008 Project is out-of-date RRS feed

  • שאלה

  • אני עובד עם VS 2008 ב-C++ unmanaged . יש לי Solution עם מספר םרוייקטים. בכל פעם שאני נכנס ל-VS ומנסה להריץ את התכנית (בלי שום שינוי) אני מקבל את ההודעה שהפרוייקט הוא out-of-date. אני לוחץ על build, התכנית הראשית עוברת link ואח"כ הכל בסדר ואני לא מקבל את ההודעה הזאת שוב שלא לצורך - עד שאני סוגר את ה-VS ופותח אותו שוב.

    האם זה באג ידוע? מה אני צריך לעשות כדי שזה יפסיק? איך אפשר לדעת איזו בדיקת עדכניות נכשלת?

    תודה, דני

    • שינה את הסוג ipdd יום ראשון 06 מרץ 2011 13:16
    יום ראשון 06 מרץ 2011 10:31

תשובות

  • לפי דעתי זה האחראי הוא QT, תנסה לחפש פרויקטי דוגמא בQT שלא מוציאים את השגיאה הנ"ל ותסתכל איך הם מקונפגים.
    אני מאמין שאיזה סידור בproperties של הפרויקט יפתור את הבעיה.


    Arik Poznanski
    blogs.microsoft.co.il/blogs/arik

    • סומן כתשובה על-ידי Meir Pinto יום רביעי 09 מרץ 2011 07:22
    • סימון כתשובה בוטל על-ידי Danny Gera יום שלישי 15 מרץ 2011 13:34
    • סומן כתשובה על-ידי Danny Gera יום חמישי 31 מרץ 2011 09:17
    יום שלישי 08 מרץ 2011 08:26

כל התגובות

  • הבעיה הנפוצה היא שיש קבצי קלט שהתאריך שלהם יותר מעודכן מקבצי הפלט הקודמים.
    זה יכול להיגרם אם אתה מוסיף לפרויקט קובץ קוד שנוצר באופן אוטומטי (generated code)
    הייתי מוודא קודם שאין כאלו קבצים, ואם יש מוציא אותם מהפרויקט.

    אם זה לא עובד, אפשר לנסות את הפתרונות הנוספים שמופיעים בפורומים בנושא זה:

    - למחוק פעם אחת ידנית את ספריות הDebug

    - להוסיף לקובץ הvcxproj את הקטע הבא:

    <?xml version="1.0" encoding="utf-8"?>
    <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <strong> <PropertyGroup>
      <TrackFileAccess>false</TrackFileAccess>
     </PropertyGroup></strong>
    ...
    
    
    

    יש לציין שתיקון זה יכול להשפיע על היכולת שלך לבצע incremental link

     


    Arik Poznanski
    blogs.microsoft.co.il/blogs/arik

    יום ראשון 06 מרץ 2011 11:11
  • בדקתי את ההצעות

    יש אכן קבצים שהם Generated Files, הם נוצרים ע"י ספריית ה-UI שאני משתמש בה (Qt), אבל הם נוצרים רק כשאני משנה הגדרות ממשק והתאריכים שלהם אינם מאוחרים. חוץ מזה, המערכת מבצעת link כשיש בעייה, ולא מקמפלת את הקבצים האלה.

    ניסיתי למחוק את כל הקבצים בספריות ה-Debug, ובניתי מחדש. אחרי הבנייה יצאתי מה VS, ונכנסתי שוב. כשלחצתי על  של Build של הפרוייקט, קיבלתי הודעה שהכל מעודכן. בשלב זה ביקשתי לרוץ, ואז קיבלתי הודעה שהפרוייקט הוא out-of-date. כנראה שבמצב זה נבדקים דברים שקשורים ל-solution, אבל מה? אין תלויות מפורשות בין פרוייקטים, וה-build שמתבצע הוא רק link בפרוייקט הראשי. התאריכים של הספריות שהוא משתמש בהן אינם מאוחרים יותר. אז למה זה קורה? האם יש דרך לבדוק מה התלות הבעייתית?

    יום ראשון 06 מרץ 2011 15:09
  • אולי ברגע שאתה מקבל את הודעת השגיאה תעבור על הקבצים ותבדוק את הModified date שלהם.
    עלול להיות מייגע אבל יכול לרמז על הקובץ הבעייתי.

    בנוסף, הייתי שוקל את האפשרות הנוספת שציינתי שהיא לבטל את TrackFileAccess


    Arik Poznanski
    blogs.microsoft.co.il/blogs/arik

    יום ראשון 06 מרץ 2011 20:06
  • בדקתי קבצים במחשב שה modified date שלהם מאוחר מה-exe שהוא תוצר ה-build שלי. הקבצים שמצאתי הם קובץ ה-CurrentSettings של הפרוייקט, קובץ ה-Intellisense database, וכל קבצי הפרוייקט המשתתפים ב-Solution שכנראה נשמרים כשאני יוצא מה-VS.

    שים לב שה-build בפני עצמו הוא up to date. רק כשאני מנסה להריץ את האפליקציה מופיעה הודעת השגיאה.

     

    פרט לזה, לא הצלחתי להכניס את השורות שנתת ל-XML בלי שזה יגרום לטעות. אין לי DefaultTargets למשל שאני יכול להכניס את אחריו. איפה בדיוק אני אמור להוסיף את שורות ה property ?

    יום שני 07 מרץ 2011 08:55
  • למיטב זכרוני יש בקובץ הזה אוסף של PropertyGroup, פושט תוסיף עוד אלמנט כזה אחרי אחד קיים.


    Arik Poznanski
    blogs.microsoft.co.il/blogs/arik

    יום שני 07 מרץ 2011 15:49
  •  

    היי,

    אשמח אם תוכל/י לעדכן אותנו בסטטוס השאלה שלך.

    במידה וקיבלת תשובה מתאימה לשאלתך, יש לסמן את התשובה המתאימה ע"י לחיצה על "סמן כתשובה" ליד סימון ה V הירוק

    אם לא קיבלת תשובה, מומלץ לספק פרטים נוספים אודות הבעיה, פרטי לוג, צילומי מסך וכו'

    על מנת להעלות תמונה לפורום ניתן להעזר במדריך להעלאת תמונה


    אם תגובתי פתרה את בעייתך - לחץ/י, על "סמן כתשובה" ליד סימן ה V הירוק.


    מיקרוסופט מציעה שירות זה ללא תשלום, למטרת סיוע למשתמשים והעשרת הידע הקשור בטכנולוגיות ובמוצרים של Microsoft. תוכן זה מתפרסם כפי שהוא והוא אינו מעיד על כל אחריות מצד מיקרוסופט.
    יום שלישי 08 מרץ 2011 07:01
  • אני לא מוצא אף שורה עם PropertyGroup בקובץ הפרוייקט שלי. אני עובד עם Visual C++ 2008, Visual Stidio Standard Edition. לקבצי הפרוייקט יש סיומת של vcproj (ולא vcxproj כמו שציינת קודם). יכול להיות שאתה מתייחס לגרסה אחרת?
    יום שלישי 08 מרץ 2011 08:02
  • לפי דעתי זה האחראי הוא QT, תנסה לחפש פרויקטי דוגמא בQT שלא מוציאים את השגיאה הנ"ל ותסתכל איך הם מקונפגים.
    אני מאמין שאיזה סידור בproperties של הפרויקט יפתור את הבעיה.


    Arik Poznanski
    blogs.microsoft.co.il/blogs/arik

    • סומן כתשובה על-ידי Meir Pinto יום רביעי 09 מרץ 2011 07:22
    • סימון כתשובה בוטל על-ידי Danny Gera יום שלישי 15 מרץ 2011 13:34
    • סומן כתשובה על-ידי Danny Gera יום חמישי 31 מרץ 2011 09:17
    יום שלישי 08 מרץ 2011 08:26
  • זה באמת כנראה ה-Qt, בדקתי וההתנהגות דומה גם בפרוייקטים אחרים של Qt. הפניתי את השאלה גם לתמיכה שלהם, ואני אעדכן כאן כשיהיו תוצאות.
    יום שלישי 08 מרץ 2011 09:07
  • הבעייה עדיין לא נפתרה. אני עדיין מנסה לעבוד מול Qt, אבל הם לא יודעים מה הבעייה וגם לא מצליחים לשחזר אותה. בינתיים ניסיתי לבדוק קצת אופציות של VS, וגיליתי שאם אני מכבה את link library dependencies, לא מתבצע link גם אחרי שאני יוצא ונכנס שוב ל-VS. לעומת זאת, עדיין מתבצעת יצירת manifest, למרות שזה אמור להיות תלוי רק בקובץ ה-EXE (כמובן שה manifest האחרון נוצר אחרי ה EXE, ויש להם את אותו זמן שינוי). להלן ציטוט מה-Build log:

    Creating temporary file "C:\Users\user\Documents\Visual Studio 2008\Projects\ForceTest2\Debug\RSP00000157202800.rsp" with contents
    [
    /outputresource:"..\Debug\ForceTest2.exe;#1" /manifest
    
    "..\Debug\ForceTest2.exe.intermediate.manifest"
    ]
    Creating command line "mt.exe @"C:\Users\user\Documents\Visual Studio 2008\Projects\ForceTest2\Debug\RSP00000157202800.rsp" /nologo"
    Creating temporary file "C:\Users\user\Documents\Visual Studio 2008\Projects\ForceTest2\Debug\BAT00000257202800.bat" with contents
    [
    @echo Manifest resource last updated at %TIME% on %DATE% > "..\Debug\mt.dep"
    ]
    Creating command line """C:\Users\user\Documents\Visual Studio 2008\Projects\ForceTest2\Debug\BAT00000257202800.bat"""
    האם זה עוזר לשפוך קצת אור על הבעייה?
    יום שלישי 15 מרץ 2011 13:41
  • בסוף באמת הבעייה קשורה ל-QT. יש עניין מסויים של משתני סביבה המוכרים בתוך ה-VSוהגדרה טובה יותר של הסביבה החיצונית פתרה את הבעייה.

    דני

    יום חמישי 31 מרץ 2011 09:21