विज़ुअल स्टूडियो 2010 हमेशा सोचता है कि यह परियोजना पुरानी है, लेकिन कुछ भी नहीं बदला है


194

मुझे यहाँ वर्णित के रूप में एक समान समस्या है

मैंने विजुअल स्टूडियो 2008 से विजुअल स्टूडियो 2010 तक C ++ / CLI और C # प्रोजेक्ट्स के मिश्रित समाधान को भी अपग्रेड किया। और अब विजुअल स्टूडियो 2010 में एक C ++ / CLI प्रोजेक्ट हमेशा पुराना है।

भले ही इसे पहले ही संकलित और लिंक कर दिया गया हो और F5हिट हो, संदेश बॉक्स "प्रोजेक्ट पुराना हो गया है। क्या आप इसका निर्माण करेंगे?" प्रकट होता है। यह बहुत कष्टप्रद है क्योंकि DLL फ़ाइल बहुत कम-स्तरीय है और समाधान की लगभग सभी परियोजनाओं को फिर से बनाने के लिए मजबूर करती है।

मेरी pdb सेटिंग्स डिफ़ॉल्ट मान ( इस समस्या का समाधान सुझाए गए ) पर सेट हैं।

क्या यह संभव है कि विज़ुअल स्टूडियो 2010 एक पुनर्निर्माण को मजबूर करता है या यह सोचता है कि कोई प्रोजेक्ट अप टू डेट है?

विजुअल स्टूडियो 2010 की तरह कोई अन्य विचार क्यों?



जवाबों:


224

दृश्य स्टूडियो / एक्सप्रेस 2010 के लिए ही। VS2012, VS2013, आदि के लिए अन्य (आसान) उत्तर देखें

अनुपलब्ध फ़ाइल खोजने के लिए , लेख से जानकारी का उपयोग करें C ++ प्रोजेक्ट सिस्टम लॉगिंग को Visual Studio में डीबग लॉगिंग सक्षम करने के लिए सक्षम करें और इसे केवल यह बताएं कि पुनर्निर्माण के कारण क्या हैं:

  1. devenv.exe.configफ़ाइल खोलें (में %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\या में पाया गया %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\)। एक्सप्रेस संस्करणों के लिए विन्यास फाइल का नाम दिया गया है V*Express.exe.config
  2. </configSections>लाइन के बाद निम्नलिखित जोड़ें :

    <system.diagnostics>
      <switches>
        <add name="CPS" value="4" />
      </switches>
    </system.diagnostics>
    
  3. विज़ुअल स्टूडियो को पुनरारंभ करें
  4. DbgView खोलें और सुनिश्चित करें कि यह डिबग आउटपुट कैप्चर कर रहा है
  5. डीबग करने का प्रयास करें (Visual Studio में F5 मारा)
  6. फ़ॉर्म की किसी भी पंक्ति के लिए डिबग लॉग खोजें:

    devenv.exe जानकारी: 0: प्रोजेक्ट 'Bla \ Bla \ Dummy.vcxproj' अप टू डेट नहीं है क्योंकि इनपुट 'Bla \ Bla \ SomeFile.h' का निर्माण गायब है।

    (मैं अभी Ctrl + F को हिट करता हूं और खोजता हूं not up to date) ये वे संदर्भ होंगे जिनके कारण यह परियोजना हमेशा के लिए "आउट ऑफ डेट" हो जाएगी।

इसे ठीक करने के लिए, या तो अपने प्रोजेक्ट से गायब फ़ाइलों का कोई संदर्भ निकालें, या उनके वास्तविक स्थानों को इंगित करने के लिए संदर्भों को अपडेट करें।

नोट: यदि 2012 या बाद में उपयोग किया जा रहा है तो स्निपेट होना चाहिए:

<system.diagnostics>
  <switches>
   <add name="CPS" value="Verbose" />
  </switches>
</system.diagnostics>

4
> DbgView खोलें और सुनिश्चित करें कि यह डिबग आउटपुट कैप्चर कर रहा है। कैसे सुनिश्चित करें कि कैप्चरिंग शुरू की गई है? परियोजनाओं के पुनर्निर्माण में भी मेरी यही समस्या है। लेकिन डीबगव्यू में कोई जानकारी नहीं है। मैंने DebugView के 'कैप्चर' मेनू में पहले 5 विकल्प को सक्षम किया। (और जवाब में अच्छे लिंक के लिए धन्यवाद!)
sergtk

3
इससे हमें यह पता लगाने में मदद मिली; हालाँकि, हमें अपने इंटरमीडिएट बिल्ड डाइरेक्टरी को डिलीट करना पड़ा था। अंतिम संदर्भों के चले जाने से पहले - शायद StdAfx.obj को रिफ्रेश करने के लिए? वैसे भी, सभी मध्यवर्ती बिल्ड फ़ोल्डर्स को हटाने और प्रोजेक्ट फ़ाइलों को साफ करने के बाद, हम भी जाने के लिए अच्छे हैं।
हेल्प्स

2
धन्यवाद - अब नियमित आउटपुट विंडो में ऐसा क्यों नहीं है?
मार्टिन बेकेट

4
यदि आप VS2012 का उपयोग कर रहे हैं, तो कॉन्फ़िगरेशन फ़ाइल में पेस्ट करने के लिए थोड़ा अलग स्निपेट है। यह मूल लेख से जुड़ा हुआ है, लेकिन सिर्फ मामले में: C ++ और जावास्क्रिप्ट प्रोजेक्ट सिस्टम को सक्षम करें VS2012
rmaVT

3
FYI करें, यह VS2013 में अब काम नहीं करता है - कॉन्फिग फाइल को एडिट करने के बाद, यह डीबग व्यू में कोई रुचि नहीं उत्पन्न करता है।
नाथन रीड

166

विजुअल स्टूडियो 2012 में मैं स्वीकार किए गए समाधान की तुलना में आसान परिणाम प्राप्त करने में सक्षम था।

मैंने मेनू टूल्सविकल्पप्रोजेक्ट्स एंड सॉल्यूशंसबिल्ड एंड रन → * MSBuild प्रोजेक्ट मिनिमल वर्बोसिटी का निर्माण मिनिमल से डायग्नोस्टिक में किया है

फिर बिल्ड आउटपुट में मुझे "अप टू डेट" की खोज करके समान लाइनें मिलीं:

प्रोजेक्ट 'ब्लाबला' आज तक नहीं है। प्रोजेक्ट आइटम 'c: \ foo \ bar.xml' में 'कॉपी टू आउटपुट डायरेक्टरी' विशेषता है जो हमेशा 'कॉपी' पर सेट होती है।


6
यह VS2013 में भी काम करता है, जहां कॉन्फिग फाइल ट्वीक अब काम नहीं करता है।
नाथन रीड

1
इसने मेरे लिए बहुत अच्छा काम किया। यह पता चला कि मेरे पास एक गोलाकार संदर्भ था (project1 -> project2, project2 -> project1.dll), जिसने प्रत्येक बार बनाने के लिए अधिकांश समाधान का कारण बना। यह उपयोग में भी नहीं था।
कोबी

7
सी # के साथ, मुझे "अप टू डेट" के साथ कुछ भी नहीं मिला, जादू शब्द "से नया है" लगता है
पीट

3
1>Project not up to date because build input 'C:\...\ReadMe.txt' is missing.: ओ !!?!
jozxyqk

3
VS2013 में आपको was modified atडायग्नोस्टिक्स मोड की खोज करनी पड़ सकती है क्योंकि मेरे पास कोई not up to dateआउटपुट नहीं था ।
जाबा

59

आज मेरे साथ ऐसा ही हुआ। मैं कारण को ट्रैक करने में सक्षम था: परियोजना में एक हेडर फ़ाइल शामिल थी जो अब डिस्क पर मौजूद नहीं थी।

प्रोजेक्ट से फ़ाइल को हटाने से समस्या हल हो गई।


2
नहीं, मेरे पास कोई हेडर फाइलें नहीं हैं जो डिस्क पर मौजूद नहीं हैं। लेकिन आप कारण को कैसे ट्रैक कर सकते थे? आपको कैसे पता चला कि एक लापता फ़ाइल थी? शायद मैं भी आपकी तरह ही जाँच करके अपनी समस्या के बारे में कुछ और जान सकता हूँ।
क्रिस यू

1
मेरे साथ ऐसा होने पर एक अलग समाधान था। शायद बहुत अस्पष्ट है, लेकिन मैं एक कंप्यूटर से परियोजना को संकलित कर रहा था, फिर एक और, और मुझे पता चला कि मैंने गलती से एक कंप्यूटर पर सुबह और दूसरे पर पीएम को समय निर्धारित किया था। कठोर समय अंतर के कारण कंप्यूटर में से एक या तो हमेशा सब कुछ संकलित करता है, या कभी भी कुछ भी संकलित नहीं करता है जब मैं स्रोत फ़ाइलों को संशोधित करता हूं।
काइल

1
यह मेरे लिए मौजूदा हेडर फ़ाइल के बावजूद काम करता है। लॉगिंग को सक्षम करने के लिए नीचे दिए गए उत्तर का उपयोग करते हुए, यह लगा कि एक हेडर फ़ाइल गायब है। मैंने इसकी निर्भरता को हटा दिया, इसे वापस जोड़ा और न्यूनतम पुनर्निर्माण फिर से काम किया!
एड बेयेट्स

घड़ी का तिरछा निर्माण अधिकांश सिस्टम को
फंसाने

15

हम इस मुद्दे पर भी भागे और यह पता लगाया कि इसे कैसे हल किया जाए।

मुद्दा ऊपर बताया गया था "फ़ाइल अब डिस्क पर मौजूद नहीं है।"

यह काफी सही नहीं है। फ़ाइल डिस्क पर मौजूद है, लेकिन .VCPROJ फ़ाइल फ़ाइल को कहीं और संदर्भित कर रही है।

आप इसे "फ़ाइल दृश्य शामिल करें" पर जाकर और प्रत्येक में फ़ाइल को शामिल करने पर क्लिक करके 'खोज' कर सकते हैं जब तक कि आपको वह विज़ुअल स्टूडियो न मिल जाए। फिर आप उस फ़ाइल (मौजूदा आइटम के रूप में) को जोड़ें और उस संदर्भ को हटा दें जो नहीं मिल सकता है और सब कुछ ठीक है।

एक वैध प्रश्न यह है: यदि दृश्य में फ़ाइलें शामिल नहीं हैं तो विजुअल स्टूडियो कैसे निर्माण कर सकता है?

हमें लगता है कि .vcproj फ़ाइल में कहीं न कहीं आपत्तिजनक फ़ाइल के लिए एक सापेक्षिक पथ है, जो विज़ुअल स्टूडियो GUI में नहीं दिखता है, और यह इस बात के लिए है कि प्रोजेक्ट वास्तव में भले ही ट्री-व्यू के गलत होने पर भी क्यों बनेगा।


4
VC निर्माण कर सकता है क्योंकि वे हेडर फाइलें हैं - और हेडर फाइलें वास्तव में संकलित नहीं होती हैं। यदि हेडर फ़ाइलों में से कोई भी वास्तव में .C / .CPP फ़ाइल द्वारा उपयोग किया जाता है, तो केवल और फिर बिल्ड विफल हो जाएगा। तो निर्भरता चेकर (जो हेडर फ़ाइल की तलाश करता है) परियोजना को एक पुनर्निर्माण की आवश्यकता के रूप में चिह्नित करता है, लेकिन वास्तविक संकलक (जो हेडर फ़ाइलों की सूची को अनदेखा करता है) सफल हो सकता है।
हेल्प्स

4
अविश्वसनीय रूप से ... यह तब भी होता है जब आपके पास एक टेक्स्ट फ़ाइल का एक बासी संदर्भ होता है (जो कि वैसे भी बिल्ड का हिस्सा नहीं है, भले ही वह मौजूद हो !!) आपकी .vcxproj फ़ाइल में। मैंने विज़ार्ड के साथ एक परियोजना बनाई थी, और इसमें एक रीडमीटेक्स्ट फ़ाइल शामिल थी, जिसे मैंने डिस्क से हटा दिया था, लेकिन vxxproj से निकालना भूल गया था।
DLRdave

मुझे कोई भी ऐसी फ़ाइल नहीं मिल रही है जिसे मैं नहीं खोल सकता (एक को छोड़कर, लेकिन वह हार्ड ड्राइव पर है। यह कुछ ऐसा कहती है जैसे विज़ुअल स्टूडियो 2010 एक्सप्रेस SKU पर उस तरह की फ़ाइल को नहीं खोला जा सकता है या ऐसा ही कुछ।
अनाम पेंगुइन

2
"फ़ाइल दृश्य शामिल करें" क्या है और आप इसे कैसे प्राप्त करते हैं?
बेन

1
फ़ाइल व्यू को शामिल करें संभवतः समाधान एक्सप्लोरर में फ़ाइलें शामिल करें अनुभाग है।
जयवल्कर

12

स्वीकृत उत्तर ने मुझे सही रास्ते पर लाने में मदद की कि इस समस्या को हल करने के लिए मुझे किस परियोजना के साथ काम करना शुरू करना है। हालांकि, मुझे बहुत बड़ी संख्या में हेडर को खराब करना था। डिबग आउटपुट के साथ, डिबग स्प्यू को आउटपुट करते समय आईडीई को 30 सेकंड के लिए फ्रीज करने का कारण बना, जिससे प्रक्रिया बहुत धीमी हो गई।

मैं अधीर हो गया और मेरे लिए (विजुअल स्टूडियो 2010) प्रोजेक्ट फाइलों की जांच करने के लिए एक त्वरित-और-गंदा पायथन स्क्रिप्ट लिखी और एक बार में सभी लापता फाइलों को आउटपुट किया, साथ ही वे जिस फिल्टर में स्थित हैं, आप उसे एक के रूप में पा सकते हैं। यहाँ सार: https://gist.github.com/antiuniverse/3825678 (या इस कांटा कि समर्थन संबंधित पथ )

उदाहरण:

D:\...> check_inc.py sdk/src/game/client/swarm_sdk_client.vcxproj
[Header Files]:
  fx_cs_blood.h   (cstrike\fx_cs_blood.h)
  hud_radar.h   (cstrike\hud_radar.h)
[Game Shared Header Files]:
  basecsgrenade_projectile.h   (..\shared\cstrike\basecsgrenade_projectile.h)
  fx_cs_shared.h   (..\shared\cstrike\fx_cs_shared.h)
  weapon_flashbang.h   (..\shared\cstrike\weapon_flashbang.h)
  weapon_hegrenade.h   (..\shared\cstrike\weapon_hegrenade.h)
  weapon_ifmsteadycam.h   (..\shared\weapon_ifmsteadycam.h)
[Source Files\Swarm\GameUI - Embedded\Base GameUI\Headers]:
  basepaenl.h   (swarm\gameui\basepaenl.h)
  ...

सोर्स कोड:

#!/c/Python32/python.exe
import sys
import os
import os.path
import xml.etree.ElementTree as ET

ns = '{http://schemas.microsoft.com/developer/msbuild/2003}'

#Works with relative path also
projectFileName = sys.argv[1]

if not os.path.isabs(projectFileName):
   projectFileName = os.path.join(os.getcwd(), projectFileName)

filterTree = ET.parse(projectFileName+".filters")
filterRoot = filterTree.getroot()
filterDict = dict()
missingDict = dict()

for inc in filterRoot.iter(ns+'ClInclude'):
    incFileRel = inc.get('Include')
    incFilter = inc.find(ns+'Filter')
    if incFileRel != None and incFilter != None:
        filterDict[incFileRel] = incFilter.text
        if incFilter.text not in missingDict:
            missingDict[incFilter.text] = []

projTree = ET.parse(projectFileName)
projRoot = projTree.getroot()

for inc in projRoot.iter(ns+'ClInclude'):
    incFileRel = inc.get('Include')
    if incFileRel != None:
        incFile = os.path.abspath(os.path.join(os.path.dirname(projectFileName), incFileRel))
        if not os.path.exists(incFile):
            missingDict[filterDict[incFileRel]].append(incFileRel)

for (missingGroup, missingList) in missingDict.items():
    if len(missingList) > 0:
        print("["+missingGroup+"]:")
        for missing in missingList:
            print("  " + os.path.basename(missing) + "   (" + missing + ")")

रिश्तेदार पथों का समर्थन करने के लिए अपने कोड को संशोधित किया। अपने लिंग को अद्यतन करने और मेरे कांटे के लिंक को हटाने के लिए स्वतंत्र महसूस करें!
ixe013

यह मेरे लिए बहुत अच्छा काम किया! क्या समय बचाने वाला! धन्यवाद! मेरे पास डायग्नोस्टिक आउटपुट में कुछ भी नहीं था जो मुझे बताता था कि क्या गलत था लेकिन आपकी उपयोगिता ने मुझे दिखाया!
एड बेयेट्स

एक और कांटा एक डायर को घेरने और प्रत्येक पाए गए vcxproj gist.github.com/paulsapps/4992d2d460f4ef44538d62c9e875ca78
'

8

मैंने समाधान से (और डिस्क से) एक सीपीपी और कुछ हेडर फाइलें हटा दी हैं, लेकिन फिर भी समस्या थी।

बात यह है, संकलक का उपयोग करने वाली प्रत्येक फ़ाइल आपके अस्थायी निर्देशिका में एक .tlog फ़ाइल में जाती है। जब आप किसी फ़ाइल को निकालते हैं, तो यह * .tlog फ़ाइल अपडेट नहीं होती है। यह कि वृद्धिशील द्वारा उपयोग की जाने वाली फ़ाइल यह जांचने के लिए बनती है कि क्या आपका प्रोजेक्ट अप टू डेट है।

या तो इस .tlog फ़ाइल को मैन्युअल रूप से संपादित करें या अपनी परियोजना को साफ़ करें और पुनर्निर्माण करें।


यह मेरे लिए था! मैंने लापता फ़ाइलों को ठीक करने के बाद घंटों बिताए, एसटीआईएल तारीख से बाहर था, लॉगिंग ने जो कुछ याद नहीं था उसके लिए अनिर्णायक हड़बड़ी दिखाई। उन TLOG फ़ाइलों से छुटकारा पाने की आवश्यकता है! धन्यवाद!
एड बेयेट्स

6

मुझे एक समान समस्या थी, लेकिन मेरे मामले में कोई भी फाइल गायब नहीं थी, इसमें एक त्रुटि थी कि pdb आउटपुट फाइल को कैसे परिभाषित किया गया: मैं प्रत्यय भूल गया। pdb (मुझे डीबग लॉगिंग ट्रिक के साथ पता चला)।

समस्या को हल करने के लिए, मैंने vxproj फ़ाइल में, निम्न पंक्ति:

<ProgramDataBaseFileName>MyName</ProgramDataBaseFileName>

सेवा

<ProgramDataBaseFileName>MyName.pdb</ProgramDataBaseFileName>

6

मुझे VS2013 (अपडेट 5) में यह समस्या थी और इसके दो कारण हो सकते हैं, दोनों आप "टूल्स" के तहत "विस्तृत" बिल्ड आउटपुट को सक्षम करके पा सकते हैं -> "प्रोजेक्ट्स एंड सॉल्यूशंस" -> "बिल्ड एंड रन" ।

  1. "Forcing recompile of all source files due to missing PDB "..."
    यह तब होता है जब आप अपने संकलक विकल्पों में डीबग सूचना आउटपुट अक्षम करते हैं (प्रोजेक्ट सेटिंग्स के तहत: C C / C ++ ”->" डिबग सूचना प्रारूप "से“ कोई नहीं "और er लिंकर" -> "डिबग जानकारी उत्पन्न करें" को "नहीं":) । यदि आपने डिफ़ॉल्ट पर you C / C ++ ”->“ प्रोग्राम डेटाबेस फ़ाइल नाम ”छोड़ दिया है (जो कि ir $ (IntDir) vc $ (PlatformToolsetVersion) .pdb”) है, तो VS को बग ( https) के कारण फ़ाइल नहीं मिलेगी। : //connect.microsoft.com/VisualStudio/feedback/details/833494/project-with-debug-information-disabled-always-rebuilds )।
    इसे ठीक करने के लिए, फ़ाइल का नाम "" (खाली फ़ील्ड) साफ़ करें।

  2. "Forcing rebuild of all source files due to a change in the command line since the last build."
    यह एक ज्ञात VS बग भी लगता है ( https://connect.microsoft.com/VisualStudio/feedback/details/833943/forcing-rebuild-of-all-source-files-due-to-a-change-in-in -कमांड -लाइन-के-बाद-आखिरी-निर्माण ) और नए संस्करणों में तय किया जा रहा है (लेकिन VS2013 नहीं)। मैं बिना किसी हल के जानता हूं, लेकिन अगर आप हर तरह से इसे यहां पोस्ट करते हैं।


1
यह मेरा मुद्दा क्यों है? कोई भी "अप टू डेट" संदेश नहीं है जहां मेरा है और इसे नीचे ट्रैक करने के लिए हमें हमेशा के लिए ले लिया। इसे हटाकर या इसे $ (IntDir) $ (ProjectName) पर सेट करना .pdb ने हमारे लिए काम किया (डिबग और रिलीज़ कॉन्फ़िगरेशन दोनों के लिए इसे बदलना सुनिश्चित करें)
जॉन Grabanski

4

मुझे नहीं पता कि किसी और को भी यही समस्या है, लेकिन मेरी परियोजना के गुणों "Configuration Properties" -> C/C++ -> "Debug Information Format"को "कोई नहीं" पर सेट किया गया था , और जब मैंने इसे डिफ़ॉल्ट रूप से "प्रोग्राम डेटाबेस (/ ज़ी)" पर वापस स्विच किया, तो इस परियोजना को हर बार फिर से शुरू करने से रोक दिया। ।


1
+1 यह मेरे लिए और साथ ही विजुअल स्टूडियो 2013 पर भी काम करता है। विशेष रूप से, जब मैं इसे किसी को भी वापस स्विच करता हूं, तो यह फिर से ठीक काम करता है।
user541686

4

विजुअल स्टूडियो फोरम द्वारा संदर्भित एक और सरल समाधान ।

कॉन्फ़िगरेशन बदलना: मेनू उपकरणविकल्पप्रोजेक्ट और समाधानVC ++ प्रोजेक्ट सेटिंग्ससभी फाइलों को दिखाने के लिए समाधान एक्सप्लोरर मोड

तब आप समाधान एक्सप्लोरर में सभी फाइलों को देख सकते हैं।

पीले आइकन द्वारा चिह्नित फ़ाइलों को ढूंढें और उन्हें परियोजना से हटा दें।

यह ठीक है।


4

विजुअल स्टूडियो 2013 - "लापता पीडीबी के कारण सभी स्रोत फ़ाइलों का पुन: संयोजन मजबूर करना"। मैंने समस्या का पता लगाने के लिए विस्तृत बिल्ड आउटपुट चालू किया: मैंने "टूल्स" → "प्रोजेक्ट्स एंड सॉल्यूशंस" → "बिल्ड एंड रन" के तहत "विस्तृत" बिल्ड आउटपुट सक्षम किया।

मेरे पास कई परियोजनाएं थीं, सभी C ++, मैंने प्रोजेक्ट सेटिंग्स के तहत विकल्प निर्धारित किया: (C / C ++ → डिबग सूचना प्रारूप) प्रोग्राम डेटाबेस (/ Zi) के लिए समस्या परियोजना के लिए। हालांकि, यह उस परियोजना के लिए समस्या को रोक नहीं पाया। समस्या समाधान में अन्य C ++ परियोजनाओं में से एक से आई है।

मैंने सभी C ++ प्रोजेक्ट्स को "प्रोग्राम डेटाबेस (/ Zi)" पर सेट किया है। इससे समस्या ठीक हो गई।

फिर, समस्या की रिपोर्ट करने वाला प्रोजेक्ट समस्या प्रोजेक्ट नहीं था। समस्या को ठीक करने के लिए "प्रोग्राम डेटाबेस (/ Zi)" के लिए सभी प्रोजेक्ट सेट करने का प्रयास करें।


VS2015 वर्बोज़ बिल्ड आउटपुट के लिए सेटिंग के बारे में समान है
LOAS

3

मैं आज इस समस्या से मिला, हालांकि यह थोड़ा अलग था। मेरे पास मेरे समाधान में CUDA DLL परियोजना थी। एक स्वच्छ समाधान में संकलित करना ठीक था, लेकिन अन्यथा यह विफल हो गया और कंपाइलर ने हमेशा CUDA DLL परियोजना का इलाज किया जो आज तक नहीं है।

मैंने इस पोस्ट से समाधान की कोशिश की ।

लेकिन मेरे हल में कोई भी हेडर फाइल गायब नहीं है। तब मुझे अपने मामले में कारण का पता चला।

मैंने पहले प्रोजेक्ट की इंटरमीडिएट डायरेक्टरी को बदल दिया है, हालांकि इससे परेशानी नहीं हुई। और अब जब मैंने CUDA DLL प्रोजेक्ट की इंटरमीडिएट डायरेक्टरी को वापस $ (कॉन्फ़िगरेशन) में बदल दिया, तो सब कुछ फिर से काम करता है।

मुझे लगता है कि CUDA बिल्ड अनुकूलन और गैर-डिफ़ॉल्ट मध्यवर्ती निर्देशिका के बीच कुछ छोटी समस्या है।


VS2013 (C #) का उपयोग करते हुए, मैंने IntermediateOutputPath की स्थापना के साथ प्रयोग किया है। यदि यह एक अलग ड्राइव पर एक फ़ोल्डर को इंगित करता है तो समाधान, वृद्धिशील इमारत काम करना बंद कर देती है - MSBuild शिकायत करता है कि कुछ स्रोत फ़ाइल हमेशा कुछ मध्यवर्ती फ़ाइल (आमतौर पर एक पीडीबी) के साथ पुरानी हो जाती है। मेरी ब्लॉग पोस्ट देखें ।
रॉबर्ट श्मिट

3

मुझे भी इसी तरह की समस्या थी और लापता फाइलों का पता लगाने के लिए उपरोक्त निर्देशों (स्वीकृत उत्तर) का पालन किया गया, लेकिन मेरे सिर को खरोंच किए बिना नहीं। यहाँ मैंने जो किया उसका सारांश है। सही होने के लिए ये फाइलें गुम नहीं होती हैं क्योंकि इन्हें बनाने के लिए प्रोजेक्ट की आवश्यकता नहीं होती है (कम से कम मेरे मामले में), लेकिन वे उन फाइलों के संदर्भ हैं जो डिस्क पर मौजूद नहीं हैं जो वास्तव में आवश्यक नहीं हैं।

यहाँ मेरी कहानी है:

  1. विंडोज 7 के तहत फ़ाइल में स्थित है %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\%। दो समान फाइलें हैं devenv.exe.config.configऔर devenv.exe.config। आप बाद में बदलना चाहते हैं।

  2. विंडोज 7 के तहत, आपको इस फाइल को प्रोग्राम फाइल्स में एडिट करने की अनुमति नहीं है। बस इसे कहीं और कॉपी करें (डेस्कटॉप) इसे बदलें और प्रोग्राम फ़ाइलों के स्थान पर इसे वापस कॉपी करें।

  3. मैं यह पता लगाने की कोशिश कर रहा था कि लापता फाइलों को देखने के लिए डिबग्यूड को आईडीई से कैसे जोड़ा जाए । खैर, आपको कुछ करने की जरूरत नहीं है। बस इसे चलाएं, और यह सभी संदेशों को कैप्चर करेगा। सुनिश्चित करें कि Capture Eventsमेनू विकल्प मेनू में चुना गया है Captureजो डिफ़ॉल्ट रूप से चुना जाना चाहिए।

  4. DebugView एक बार में सभी लापता फ़ाइलों को प्रदर्शित नहीं करेगा (कम से कम यह मेरे लिए नहीं था)! आपके पास Visual Studio 2010 में DebugView प्रोजेक्ट चल रहा होगा और रन होगा। यह project out of dateसंदेश को प्रॉम्प्ट करेगा , बनाने के लिए हाँ का चयन करें और DebugView पहली फ़ाइल दिखाएगा जो अनुपलब्ध है या पुनर्निर्माण का कारण बन रही है। नोटपैड में प्रोजेक्ट फ़ाइल (समाधान फ़ाइल नहीं) खोलें और उस फ़ाइल को खोजें और इसे हटा दें। आप अपनी परियोजना को बंद करने और इसे हटाते समय इसे फिर से खोलने से बेहतर हैं। इस प्रक्रिया को तब तक दोहराएं, जब तक कि डिबग व्यू किसी भी फाइल को मिस नहीं करता।

  5. यह डिबग व्यू टूलबार बटन या संपादनफ़िल्टर / हाइलाइट विकल्प से अद्यतित नहीं करने के लिए संदेश फ़िल्टर सेट करने में मददगार है । इस तरह से प्रदर्शित होने वाले एकमात्र संदेश वह हैं जो `` अप टू डेट 'स्ट्रिंग नहीं हैं।

मेरे पास बहुत सारी फाइलें थीं जो अनावश्यक संदर्भ थीं और उन सभी को हटाकर उपरोक्त चरणों का पालन करते हुए समस्या को हल किया।

एक बार में सभी लापता फ़ाइलों को खोजने का दूसरा तरीका

इन फ़ाइलों को एक साथ खोजने के लिए एक दूसरा तरीका है, लेकिन इसमें विज़ुअल स्टूडियो 2010 के साथ (ए) स्रोत नियंत्रण और (बी) का एकीकरण शामिल है। विज़ुअल स्टूडियो 2010 का उपयोग करके , अपनी परियोजना को स्रोत में एक वांछित स्थान या डमी स्थान में जोड़ें। नियंत्रण। यह उन सभी फाइलों को जोड़ने की कोशिश करेगा, जिनमें डिस्क पर मौजूद नहीं है, लेकिन प्रोजेक्ट फ़ाइल में संदर्भित है। पेरफोर्स जैसे अपने सोर्स कंट्रोल सॉफ्टवेयर पर जाएं , और यह इन फाइलों को चिह्नित करना चाहिए जो एक अलग रंग योजना में डिस्क पर मौजूद नहीं हैं। Perforce उन पर काले रंग का ताला दिखाता है। ये आपके लापता संदर्भ हैं। अब आपके पास उन सभी की एक सूची है, और आप उन सभी को अपनी परियोजना फ़ाइल से नोटपैड का उपयोग करके हटा सकते हैं और आपकी परियोजना की तारीख से बाहर होने के बारे में शिकायत नहीं करेंगे ।


2

मेरे लिए यह परियोजना के अंदर "हेडर फाइल" पर एक गैर-मौजूदा हेडर फ़ाइल की उपस्थिति थी। इस प्रविष्टि को हटाने के बाद (राइट-क्लिक करें> प्रोजेक्ट से बाहर निकालें) पहली बार recompiled, फिर सीधे

========== बिल्ड: 0 सफल, 0 विफल, 5 अप-टू-डेट, 0 स्किप = ========

और संशोधन के बिना पुनर्निर्माण का कोई प्रयास नहीं किया गया। मुझे लगता है कि VS2010 द्वारा लागू किया गया एक चेक-बिल्ड-बिल्ड है (यह सुनिश्चित नहीं है कि अगर दस्तावेज किया गया हो, तो) "ऑलवेजक्रीट" ध्वज को ट्रिगर करता है।


2

यदि आप कमांड-लाइन MSBuild कमांड (विजुअल स्टूडियो आईडीई नहीं) का उपयोग कर रहे हैं, उदाहरण के लिए यदि आप AppVeyor को लक्षित कर रहे हैं या आप केवल कमांड लाइन पसंद करते हैं, तो आप इस विकल्प को अपनी MSBuild कमांड लाइन में जोड़ सकते हैं:

/fileLoggerParameters:LogFile=MyLog.log;Append;Verbosity=diagnostic;Encoding=UTF-8

के रूप में यहाँ प्रलेखित (चेतावनी: सामान्य MSDN शब्दशः)। जब निर्माण पूर्ण होने पर, स्ट्रिंग के लिए खोज will be compiled, निर्माण के दौरान बनाया लॉग फ़ाइल में MyLog.log


1
/ क्रिया: विस्तृत भी एक ही जानकारी देगा लेकिन क्रिया के रूप में नहीं है। फिर आप "के रूप में संकलित किया जाएगा" के लिए खोज कर सकते हैं।
शेन गैनन

1
आपको "स्रोत संकलन आवश्यक" की भी खोज करनी चाहिए, जिसमें लिंक भी मिलेंगे
शेन गॉनन

2

मैं अपडेट 4 के साथ विजुअल स्टूडियो 2013 प्रोफेशनल का उपयोग कर रहा हूं, लेकिन किसी भी अन्य सुझाव के साथ रिज़ॉल्यूशन नहीं मिला, हालांकि, मैंने अपनी टीम प्रोजेक्ट के लिए समस्या को हल करने का प्रबंधन किया।

यहाँ मैं समस्या का कारण क्या है -

  • एक नया वर्ग ऑब्जेक्ट बनाया गया (प्रोजेक्ट -> क्लास जोड़ें)
  • समाधान एक्सप्लोरर के माध्यम से फ़ाइल का नाम बदला और जब मैं स्वचालित रूप से मिलान करने के लिए सभी संदर्भों का नाम बदलना चाहता था, तो हाँ क्लिक किया

यहाँ मैंने समस्या को हल करने के लिए क्या किया -

  • टीम एक्सप्लोरर होम पर जाएं
  • स्रोत नियंत्रण एक्सप्लोरर पर क्लिक करें
  • उस फ़ोल्डर में ड्रिल करें जहां सभी क्लास / प्रोजेक्ट फाइल हैं
  • सूची में मूल फ़ाइल नाम मिला और उसे राइट-क्लिक के माध्यम से हटा दिया गया
  • बिल्ड

यदि आपके लिए यह मामला है, तो अतिरिक्त रूप से सुनिश्चित करें कि आप उस वास्तविक फ़ाइल के बजाय प्रेत फ़ाइल को हटा रहे हैं जिसे आप प्रोजेक्ट में रखना चाहते हैं।


1

मुझे यह समस्या थी और मुझे यह पता चला:

http://curlybrace.blogspot.com/2005/11/visual-c-project-continually-out-of.html

दृश्य C ++ प्रोजेक्ट लगातार आउट-ऑफ-डेट (winwlm.h macwin32.h rpcerr.h macname1.h गायब)

संकट:

विजुअल C ++ .Net 2003 में, मेरी एक परियोजना हमेशा पुरानी होने का दावा किया गया था, भले ही कुछ भी नहीं बदला था और अंतिम बिल्ड में कोई त्रुटि नहीं बताई गई थी।

इसी प्रोजेक्ट के लिए BuildLog.htm फ़ाइल खोलने से इन फ़ाइलों के लिए PRJ0041 त्रुटियों की एक सूची दिखाई दी, जिनमें से कोई भी मेरे सिस्टम पर कहीं भी दिखाई नहीं देता है: winwlm.h macwin32.h rpcerr.h macname1.h

प्रत्येक त्रुटि कुछ इस तरह दिखती है:

  MyApplication : warning PRJ0041 : Cannot find missing dependency 'macwin32.h' for file 'MyApplication.rc'.  

आपकी परियोजना अभी भी बन सकती है, लेकिन जब तक यह फ़ाइल नहीं मिलती है, तब तक यह जारी रह सकती है।

उपाय:

प्रोजेक्ट की .rc फ़ाइल afxres.hके resource.hअंदर के बजाय शामिल करें ।

प्रोजेक्ट की .rc फ़ाइल में "#include resource.h" शामिल था। चूंकि संसाधन संकलक प्रीप्रोसेसर #ifdefब्लॉकों का सम्मान नहीं करता है , इसलिए यह उन फाइलों को फाड़ देगा और यह खोजने की कोशिश करेगा कि इसमें शामिल फाइलों को अनदेखा किया जाना चाहिए। Windows.h में ऐसे कई ब्लॉक हैं। इसमें afxres.h को शामिल करने के बजाय PRJ0041 चेतावनियाँ तय की गईं और "प्रोजेक्ट आउट-ऑफ-द-डेट" त्रुटि संवाद समाप्त कर दिया।


1

मेरे मामले में एक परियोजना में कई IDL फाइलें हैं। MIDL कंपाइलर उनमें से प्रत्येक के लिए 'dlldata.c' नामक एक DLL डेटा फ़ाइल उत्पन्न करता है, IDL फ़ाइल नाम की परवाह किए बिना। इसके कारण विजुअल स्टूडियो ने हर बिल्ड पर IDL फ़ाइलों को संकलित किया, यहाँ तक कि किसी भी IDL फाइल में बदलाव किए बिना।

वर्कअराउंड प्रत्येक IDL फ़ाइल के लिए एक अनूठी आउटपुट फ़ाइल को कॉन्फ़िगर करने के लिए है (MIDL कंपाइलर हमेशा ऐसी फ़ाइल उत्पन्न करता है, भले ही / dlldata स्विच छोड़ा गया हो):

  • IDL फ़ाइल पर राइट-क्लिक करें
  • गुण चुनें - MIDL - आउटपुट
  • DllData फ़ाइल गुण के लिए एक अद्वितीय फ़ाइल नाम दर्ज करें

1

मैंने इस पर अपने बाल फाड़ने में कई घंटे बिताए। निर्माण आउटपुट सुसंगत नहीं था; अलग-अलग कारणों से एक बिल्ड से अगले लगातार निर्माण के लिए अलग-अलग प्रोजेक्ट "अप टू डेट" नहीं होंगे। मैंने अंततः पाया कि अपराधी ड्रॉपबॉक्स (3.0.4) था। मैं अपने प्रोजेक्ट फ़ोल्डर में अपने स्रोत फ़ोल्डर से जंक्शन ... \ DropBox मेरी परियोजनाओं फ़ोल्डर में (यदि यह कारण है तो निश्चित नहीं है), लेकिन ड्रॉपबॉक्स किसी भी तरह से एक बिल्ड के दौरान फ़ाइलों को "छूता है" । रुका हुआ सिंकिंग और सब कुछ लगातार अप-टू-डेट है।


1

इसके कुछ संभावित कारण हैं और - जैसा कि उल्लेख किया गया है - आपको पहले 'निदान' के लिए MSBuild वर्बोसिटी सेट करके उनका निदान करने की आवश्यकता है। अधिकांश बार बताया गया कारण स्वयं व्याख्यात्मक होगा और आप उस पर तुरंत कार्रवाई कर पाएंगे, लेकिन कभी-कभार MSBuild गलत तरीके से दावा करेगा कि कुछ फाइलें संशोधित हैं और उन्हें कॉपी करने की आवश्यकता है।

यदि ऐसा है, तो आपको NTFS सुरंग को निष्क्रिय करने या अपने आउटपुट फ़ोल्डर को एक नए स्थान पर डुप्लिकेट करने की आवश्यकता होगी। यहाँ यह अधिक शब्दों में है।


1

यह मेरे साथ कई बार हुआ और फिर चला गया, इससे पहले कि मैं यह पता लगा सकूं कि क्यों। मेरे मामले में यह था:

दोहरी बूट सेटअप में गलत सिस्टम समय!

पता चला, उबंटू के साथ मेरी दोहरी बूट मूल कारण था !! मैं अपने हार्डवेयर घड़ी के साथ खिलवाड़ रोकने के लिए उबंटू को ठीक करने के लिए बहुत आलसी हो गया हूं। जब मैं उबंटू में प्रवेश करता हूं, तो समय 5 घंटे आगे बढ़ जाता है।

दुर्भाग्य से, मैंने एक बार गलत सिस्टम समय के साथ परियोजना का निर्माण किया, फिर समय को सही किया। नतीजतन, सभी बिल्ड फ़ाइलों में गलत टाइमस्टैम्प थे, और वीएस को लगता है कि वे सभी पुराने हैं और परियोजना का पुनर्निर्माण करेंगे।


1

अधिकांश बिल्ड सिस्टम यह निर्धारित करने के लिए डेटा टाइम स्टैम्प का उपयोग करते हैं कि जब पुनर्स्थापना होनी चाहिए - निर्भरता के अंतिम संशोधित समय के खिलाफ किसी भी आउटपुट फ़ाइलों की तिथि / समय स्टैंप की जाँच की जाती है - यदि कोई निर्भरता नए सिरे से हो, तो लक्ष्य का पुनर्निर्माण किया जाता है।

यह समस्या पैदा कर सकता है अगर किसी पर निर्भरता किसी भी तरह से एक अवैध डेटा टाइम स्टैम्प प्राप्त कर लेती है क्योंकि किसी भी बिल्ड आउटपुट के समय स्टैम्प के लिए यह मुश्किल है कि वह भविष्य में बनाई गई किसी फ़ाइल के टाइमस्टैम्प से अधिक हो जाए: P


क्या यह संभव है कि वीएस2010 एक पुनर्निर्माण को मजबूर करता है या ऐसा लगता है कि कोई प्रोजेक्ट अपटूडेट है?
क्रिस यू

VS6 या शायद VS2005 में एक अजीब सा प्रॉपर्टी डायलॉग था जो किसी प्रॉजेक्ट पर राइट क्लिक करने पर निर्भर करता था, जिसमें एक प्रोजेक्ट में प्रत्येक फाइल की निर्भरता और आउटपुट दिखाने वाले टैब होते थे। मुझे नहीं पता कि VS2008 (या VS2010) में बराबर रिपोर्ट कैसे मिलती है
क्रिस बेके

1

मेरे लिए, समस्या एक WPF परियोजना में उत्पन्न हुई, जहां कुछ फाइलों में 'संसाधन' के लिए 'एक्शन बिल्ड' संपत्ति सेट थी और उनकी 'कॉपी टू आउटपुट डायरेक्टरी' में 'कॉपी अगर नया' सेट था। ऐसा लग रहा था कि 'कॉपी टू आउटपुट डायरेक्टरी' प्रॉपर्टी को 'कॉपी न करें' में बदल दिया जाए।

msbuild 'संसाधन' फ़ाइलों को आउटपुट में कॉपी नहीं करना जानता है - लेकिन अगर वे वहां नहीं हैं तो भी एक निर्माण को ट्रिगर करता है। शायद यह एक बग माना जा सकता है?

यह यहाँ उत्तर के साथ बेहद मददगार है कि यह कैसे सब कुछ बनाये रखता है इस पर सेम को फैलाने के लिए msbuild कैसे प्राप्त करें!


0

यदि आप प्रोजेक्ट के लिए डिबगिंग कमांड तर्कों को बदलते हैं, तो यह प्रोजेक्ट को फिर से बनाए जाने के लिए ट्रिगर करने की जरूरत है। भले ही लक्ष्य डिबगिंग तर्कों से स्वयं प्रभावित न हो, लेकिन परियोजना के गुण बदल गए हैं। यदि आप हालांकि पुनर्निर्माण करते हैं, तो संदेश गायब हो जाना चाहिए।


0

मेरे पास विज़ुअल स्टूडियो 2005 के साथ एक समान मुद्दा था, और मेरे समाधान में निम्नलिखित निर्भरता में पांच परियोजनाएं शामिल थीं (पहली बार शीर्ष पर निर्मित):

Video_Codec depends on nothing
Generic_Graphics depends on Video_Codec
SpecificAPI_Graphics depends on Generic_Graphics
Engine depends on Specific_Graphics
Application depends on Engine.

मुझे पता चल रहा था कि Video_Codec परियोजना पूरी तरह से साफ होने के बाद भी एक पूर्ण निर्माण चाहती थी, फिर समाधान का पुनर्निर्माण।

मैंने इसे pdbC / C ++ दोनों के आउटपुट फ़ाइल को सुनिश्चित करके और लिंक करने वाले ने अन्य कार्यशील परियोजनाओं द्वारा उपयोग किए गए स्थान से मिलान करके सुनिश्चित किया। मैंने RTTI भी चालू कर दिया।


0

विज़ुअल स्टूडियो 2015 एसपी 3 पर एक और, लेकिन मैंने कुछ साल पहले विजुअल स्टूडियो 2013 पर इसी तरह के मुद्दे का सामना किया है।

मेरा मुद्दा यह था कि किसी तरह एक गलत cpp फ़ाइल का उपयोग precompiled हेडर के लिए किया गया था (इसलिए मेरे पास दो cpp फाइलें थीं जो precompiled हेडर बनाया था)। अब विज़ुअल स्टूडियो ने मेरे अनुरोध के बिना head precompiled हेडर बनाने ’के लिए गलत cpp पर झंडे क्यों बदले, मुझे कोई सुराग नहीं है, लेकिन ऐसा हुआ ... शायद कुछ प्लगइन या कुछ और ???

वैसे भी, गलत cpp फ़ाइल में version.h फ़ाइल शामिल होती है जिसे हर बिल्ड पर बदला जाता है। इसलिए विज़ुअल स्टूडियो सभी हेडर को फिर से बनाता है और उसी के कारण पूरा प्रोजेक्ट।

खैर, अब यह सामान्य व्यवहार पर वापस आ गया है।


0

मेरे पास एक VC ++ प्रोजेक्ट था जो हमेशा सभी फाइलों को संकलित करता था और पहले VS2005 से VS2010 (अन्य लोगों द्वारा) में अपग्रेड किया गया था। मैंने पाया कि StdAfx.cpp को छोड़कर प्रोजेक्ट की सभी cpp फाइलें प्री-कंपाइल हेडर को बनाने (/ Yc) के लिए सेट की गई थीं। मैंने इसे इसलिए बदल दिया कि केवल StdAfx.cpp को प्री-कंपाइल हेडर बनाने के लिए सेट किया गया था और बाकी प्री-कंपाइल हेडर का उपयोग (/ Yu) करने के लिए सेट किया गया था और इसने मेरे लिए समस्या को ठीक कर दिया।


0

मैं विजुअल स्टूडियो 2013 पर हूं और सिर्फ विंडोज 10 मई 2019 को अपडेट किया गया है और बदलावों की परवाह किए बिना अचानक हर बार अपडेट और संकलन करना पड़ा। टारगेट का नाम बदलकर ProjectName के बजाय लक्ष्य का नाम बदलने की कोशिश की, विस्तृत लॉग और उस पाइथन स्क्रिप्ट के साथ लापता फ़ाइलों की तलाश की, लेकिन अंत में यह एमएस के सर्वर (मिलीसेकंड की तरह) के साथ समन्वयित नहीं था।

मेरे लिए यह क्या हल था

  • नियंत्रण कक्ष में "दिनांक और समय समायोजित करें"
  • "अभी सिंक करें"

अब मेरी परियोजनाओं को बिना किसी कारण के दोबारा शुरू करने की जरूरत नहीं है।


0

मुझे लगता है कि आपने कुछ न्यूलाइन या अन्य व्हाट्सएप को रखा। इसे निकालें और फिर से F5 दबाएं।


-3

.NET प्रोजेक्ट्स की परवाह किए बिना हमेशा recompiled है। इसका हिस्सा IDE को अद्यतित रखना है (जैसे कि IntelliSense)। मुझे याद है कि यह सवाल एक Microsoft फोरम पर वर्षों पहले पूछा गया था, और यह वह उत्तर था जो मुझे दिया गया था।


1
VS2008 में परियोजना ने हर बार पुनर्निर्माण नहीं किया। यह बहुत कष्टप्रद है क्योंकि dll बहुत कम-स्तरीय है और मेरे सभी dll को पुनर्निर्माण के लिए मजबूर करता है। माइग्रेशन पर कुछ गलत हो गया है और मैं इसका पता नहीं लगा सकता।
क्रिस यू

2
२०० 2013, २०१०, २०१२ और २०१३ का कोई पुनर्निर्माण नहीं किया गया है। NET प्रोजेक्ट्स हर समय
१४'१४ को

अंतर्मुखी कार्यात्मक रखने के लिए बैक ग्राउंड संकलन चल रहा है (और यह उत्तर 10 साल पुराना है) याद रखें। I
प्रीत संघ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.