Visual Studio 2010 มักคิดว่าโครงการล้าสมัย แต่ไม่มีอะไรเปลี่ยนแปลง


194

ผมมีปัญหาที่คล้ายกันมากตามที่อธิบายไว้ที่นี่

ฉันยังอัปเกรดโซลูชันผสมของโครงการ C ++ / CLI และ C # จาก Visual Studio 2008 เป็น Visual Studio 2010 และตอนนี้ใน Visual Studio 2010 โครงการ C ++ / CLI หนึ่งโครงการมักจะล้าสมัยเสมอ

แม้ว่าจะได้รับการรวบรวมและเชื่อมโยงก่อนหน้าF5นี้และได้รับผลกระทบกล่องข้อความ "โครงการล้าสมัยคุณต้องการสร้างหรือไม่" ปรากฏขึ้น นี่เป็นเรื่องที่น่ารำคาญมากเพราะไฟล์ DLL นั้นมีระดับต่ำมากและบังคับให้เกือบทุกโครงการในการสร้างโซลูชัน

การตั้งค่า pdb ของฉันถูกตั้งค่าเป็นค่าเริ่มต้น ( วิธีแก้ไขปัญหาที่แนะนำ )

เป็นไปได้ไหมที่สาเหตุที่ทำให้ Visual Studio 2010 บังคับให้สร้างใหม่หรือคิดว่าโครงการนั้นทันสมัย

ความคิดเห็นอื่นใดที่ว่าเหตุใด Visual Studio 2010 จึงมีลักษณะเช่นนั้น



คำตอบ:


224

สำหรับ Visual Studio / Express 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\) สำหรับรุ่นเอ็กซ์เพรสไฟล์ config V*Express.exe.configเป็นชื่อ
  2. เพิ่มรายการต่อไปนี้หลัง</configSections>บรรทัด:

    <system.diagnostics>
      <switches>
        <add name="CPS" value="4" />
      </switches>
    </system.diagnostics>
    
  3. เริ่ม Visual Studio ใหม่
  4. เปิดDbgViewและตรวจสอบให้แน่ใจว่าได้จับเอาท์พุทการดีบั๊กแล้ว
  5. ลองตรวจแก้จุดบกพร่อง (กด F5 ใน Visual Studio)
  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 ตัวแรกในเมนู 'จับภาพ' ของ DebugView (และขอขอบคุณสำหรับคำตอบที่ดี!)
sergtk

3
สิ่งนี้ช่วยเราคิดออก อย่างไรก็ตามเราต้องลบไดเรกทอรีบิลด์กลางของเราก่อนที่การอ้างอิง. H ครั้งสุดท้ายจะหายไป - อาจจะรีเฟรช StdAfx.obj หรือไม่ อย่างไรก็ตามหลังจากลบโฟลเดอร์บิลด์กลางทั้งหมดและล้างไฟล์โครงการแล้วเราก็พร้อมใช้งาน
AHelps

2
ขอบคุณ - ทีนี้ทำไมถึงไม่เป็นเช่นนั้นในหน้าต่างแสดงผลปกติ
Martin Beckett

4
หากคุณใช้ VS2012 จะมีข้อมูลโค้ดที่แตกต่างกันเล็กน้อยเพื่อวางลงในไฟล์ปรับแต่ง สิ่งนี้เชื่อมโยงจากบทความต้นฉบับ แต่ในกรณี: เปิดใช้งานการติดตามระบบโครงการ C ++ และ Javascript VS2012
rmaVT

3
FYI, สิ่งนี้ดูเหมือนว่าจะไม่ทำงานอีกต่อไปใน VS2013 - หลังจากแก้ไขไฟล์กำหนดค่าแล้วมันจะไม่สร้างสิ่งที่น่าสนใจใน DebugView
นาธานรีด

166

ใน Visual Studio 2012 ฉันสามารถบรรลุผลลัพธ์เดียวกันได้ง่ายกว่าโซลูชันที่ยอมรับ

ผมเปลี่ยนตัวเลือกในเมนูToolsตัวเลือกโครงการและโซลูชั่นสร้างและเรียก → * MSBuild โครงการฟุ่มเฟื่อยสร้างการส่งออก" จากที่น้อยที่สุดที่จะวินิจฉัย

จากนั้นในผลลัพธ์งานสร้างฉันพบบรรทัดเดียวกันโดยค้นหา "ไม่ทันสมัย":

โครงการ 'blabla' ไม่ทันสมัย รายการโครงการ 'c: \ foo \ bar.xml' มีการตั้งค่าแอตทริบิวต์ 'คัดลอกไปยังไดเรกทอรีผลผลิต' เป็น 'คัดลอกเสมอ'


6
สิ่งนี้ยังทำงานใน VS2013 ซึ่งปรับแต่งไฟล์ปรับแต่งดูเหมือนจะไม่ทำงานอีกต่อไป
Nathan Reed

1
มันใช้งานได้ดีมากสำหรับฉัน ปรากฎว่าฉันมีการอ้างอิงแบบวงกลม (project1 -> project2, project2 -> project1.dll) ซึ่งทำให้โซลูชันส่วนใหญ่สร้างในแต่ละครั้ง มันไม่ได้ใช้งาน
Kobi

7
ด้วย C # ฉันไม่สามารถหาสิ่งใดที่มี "ไม่ทันสมัย" คำวิเศษที่ดูเหมือนว่าจะ "ใหม่กว่า"
Pete

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

3
ใน VS2013 คุณอาจต้องค้นหาwas modified atในโหมดการวินิจฉัยเพราะฉันไม่มีnot up to dateผลลัพธ์
jaba

59

เรื่องนี้เกิดขึ้นกับฉันวันนี้ ฉันสามารถติดตามสาเหตุ: โครงการรวมไฟล์ส่วนหัวซึ่งไม่มีอยู่ในดิสก์อีกต่อไป

การลบไฟล์ออกจากโครงการช่วยแก้ไขปัญหา


2
ไม่ฉันไม่มีไฟล์ส่วนหัวใด ๆ ที่ไม่มีอยู่ในดิสก์ แต่คุณสามารถติดตามสาเหตุได้อย่างไร คุณทราบได้อย่างไรว่ามีไฟล์ที่ขาดหายไป บางทีฉันสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับปัญหาของฉันได้โดยการตรวจสอบในลักษณะเดียวกับคุณ
Chris U

1
มีวิธีแก้ปัญหาที่แตกต่างกันเมื่อสิ่งนี้เกิดขึ้นกับฉัน อาจจะค่อนข้างคลุมเครือ แต่ฉันได้รวบรวมโครงการจากคอมพิวเตอร์เครื่องหนึ่งจากนั้นอีกเครื่องหนึ่งและค้นพบว่าฉันตั้งใจตั้งเวลาเป็น AM บนคอมพิวเตอร์เครื่องหนึ่งและ PM อีกเครื่องหนึ่งโดยบังเอิญ ความแตกต่างของเวลาที่รุนแรงทำให้คอมพิวเตอร์เครื่องใดเครื่องหนึ่งรวบรวมทุกอย่างเสมอหรือไม่รวบรวมอะไรเลยแม้แต่ตอนที่ฉันแก้ไขไฟล์ต้นฉบับ
Kyle

1
สิ่งนี้ใช้ได้สำหรับฉันทั้งๆที่มีไฟล์ส่วนหัวอยู่แล้ว การใช้คำตอบด้านล่างเพื่อเปิดใช้งานการบันทึกหมายความว่าไฟล์ส่วนหัวหายไป ฉันลบการอ้างอิงของมันเพิ่มเข้ามาอีกครั้งและการสร้างใหม่อีกครั้งทำงานน้อยที่สุดอีกครั้ง!
Ed Bayiates

clock skew จะทำให้ระบบ build ส่วนใหญ่เกิดการระเบิด
paulm

15

เราพบปัญหานี้และพบวิธีแก้ไขปัญหา

ปัญหาดังกล่าวข้างต้น "ไฟล์ไม่มีอยู่ในดิสก์"

มันไม่ถูกต้องนัก ไฟล์มีอยู่บนดิสก์ แต่ไฟล์. CVPROJ อ้างอิงไฟล์อยู่ที่อื่น

คุณสามารถ 'ค้นหา' สิ่งนี้ได้โดยไปที่ "มุมมองไฟล์รวม" และคลิกที่ไฟล์รวมแต่ละไฟล์จนกว่าคุณจะพบไฟล์ Visual Studio ที่ไม่สามารถค้นหาได้ จากนั้นคุณเพิ่มไฟล์นั้น (เป็นรายการที่มีอยู่) และลบการอ้างอิงที่ไม่สามารถหาได้และทุกอย่างก็โอเค

คำถามที่ถูกต้องคือ: Visual Studio สามารถสร้างได้อย่างไรหากไม่ทราบว่าไฟล์รวมอยู่ที่ไหน

เราคิดว่าไฟล์. vcproj มีเส้นทางสัมพัทธ์ไปยังไฟล์ที่ละเมิดบางแห่งที่ไม่ปรากฏใน Visual Studio GUI และบัญชีนี้เพราะเหตุใดโครงการจึงสร้างขึ้นจริงแม้ว่ามุมมองแบบต้นไม้ของการรวมนั้นไม่ถูกต้อง


4
เหตุผลที่ VC สามารถสร้างได้เพราะพวกเขาเป็นไฟล์ส่วนหัว - และไฟล์ส่วนหัวไม่ได้รับการรวบรวมจริง หากไฟล์ส่วนหัวใด ๆ มีการใช้งานจริงโดยไฟล์. C / .CPP ดังนั้นโครงสร้างจะล้มเหลวเท่านั้น ดังนั้นตัวตรวจสอบการพึ่งพา (ซึ่งมองหาไฟล์ส่วนหัว) ทำเครื่องหมายโครงการว่าต้องการสร้างใหม่ แต่คอมไพเลอร์จริง (ซึ่งเพิ่งละเว้นรายการของไฟล์ส่วนหัว) สามารถประสบความสำเร็จ
AHelps

4
ไม่น่าเชื่อ ... สิ่งนี้จะเกิดขึ้นหากคุณมีการอ้างอิงเก่าไปยังไฟล์ข้อความ (ซึ่งไม่ได้เป็นส่วนหนึ่งของการสร้างต่อไปแม้ว่าจะมีอยู่ !!) ในไฟล์. vcxproj ของคุณ ฉันสร้างโครงการด้วยตัวช่วยสร้างและมันรวมไฟล์ ReadMe.txt ซึ่งฉันลบออกจากดิสก์ แต่ลืมลบออกจาก vcxproj
DLRdave

ฉันไม่พบไฟล์ใด ๆ ที่ฉันไม่สามารถเปิดได้ (ยกเว้นไฟล์เดียว แต่อยู่ในฮาร์ดไดรฟ์) มันบอกว่าไฟล์ประเภทนั้นไม่สามารถเปิดได้บน SKU Visual Studio 2010 Express หรืออะไรทำนองนั้น
เพนกวินไม่ระบุชื่อ

2
"มุมมองไฟล์รวม" คืออะไรและคุณจะไปได้อย่างไร
Ben

1
มุมมองไฟล์รวมอาจเป็นส่วนของไฟล์รวมใน Solution Explorer
Jaywalker

12

คำตอบที่ได้รับการยอมรับช่วยฉันในเส้นทางที่ถูกต้องในการหาวิธีแก้ปัญหานี้สำหรับโครงการที่เมาที่ฉันต้องเริ่มทำงานด้วย อย่างไรก็ตามฉันต้องจัดการกับส่วนหัวที่ไม่ดีจำนวนมาก ด้วยเอาต์พุตการดีบักแบบ verbose การลบหนึ่งทำให้ IDE หยุดการทำงานเป็นเวลา 30 วินาทีขณะที่เอาต์พุต debug spew ซึ่งทำให้กระบวนการทำงานช้ามาก

ฉันใจร้อนและเขียนสคริปต์ Python ที่รวดเร็วและสกปรกเพื่อตรวจสอบไฟล์โครงการ (Visual Studio 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

มันใช้งานได้ดีสำหรับฉัน! ช่างเป็นอะไรที่ประหยัดเวลา! ขอบคุณ! ฉันไม่มีอะไรในเอาต์พุตการวินิจฉัยที่บอกฉันว่ามีอะไรผิดปกติ แต่ยูทิลิตี้ของคุณแสดงให้ฉันเห็น!
Ed Bayiates

อีกทางเลือกหนึ่งสำหรับ enum dir และโทรหาแต่ละคนที่พบ vcxproj gist.github.com/paulsapps/4992d2d460f4ef44538d62c9e875ca78
paulm

8

ฉันได้ลบ cpp และไฟล์ส่วนหัวบางส่วนจากโซลูชัน (และจากดิสก์) แต่ยังมีปัญหาอยู่

สิ่งนี้คือไฟล์ทุกไฟล์ที่คอมไพเลอร์ใช้ไปในไฟล์ * .tlog ในไดเรกทอรีชั่วคราวของคุณ เมื่อคุณลบไฟล์ไฟล์ * .tlog นี้จะไม่อัปเดต นั่นคือไฟล์ที่ใช้โดยบิวด์ส่วนเพิ่มเพื่อตรวจสอบว่าโครงการของคุณเป็นปัจจุบันหรือไม่

แก้ไขไฟล์. log นี้ด้วยตนเองหรือล้างโปรเจคและสร้างใหม่


นี่มันสำหรับฉัน! ฉันใช้เวลาหลายชั่วโมงหลังจากแก้ไขไฟล์รวมที่หายไป STILL ล้าสมัยการบันทึกแสดงว่ามีข้อสรุปที่ไม่ได้ผล จำเป็นต้องกำจัดไฟล์ TLOG เหล่านั้น! ขอบคุณ!
Ed Bayiates

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 "..."
    สิ่งนี้จะเกิดขึ้นเมื่อคุณปิดใช้งานข้อมูล debug ในตัวเลือกคอมไพเลอร์ของคุณ (ภายใต้การตั้งค่าโครงการ:„ C / C ++“ ->“ รูปแบบข้อมูลการดีบัก“ เป็น„ ไม่มี” และ„ Linker“ ->“ สร้างข้อมูลการดีบัก . หากคุณเหลือ„ C / C ++“ ->“ ชื่อไฟล์ฐานข้อมูลโปรแกรม” ที่ค่าเริ่มต้น (ซึ่งคือ„ $ (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-source-contact-voiceStudio/details/833943/) the-command-line-since-the-last-build ) และดูเหมือนว่าจะได้รับการแก้ไขในเวอร์ชันที่ใหม่กว่า (แต่ไม่ใช่ VS2013) ฉันรู้ว่าไม่มีวิธีแก้ปัญหา แต่ถ้าคุณทำโพสต์ไว้ที่นี่


1
นี่คือสาเหตุที่ปัญหาของฉัน ไม่มีข้อความ "ไม่ทันสมัย" ที่อยู่บนฉันและใช้เวลาตลอดไปในการติดตามสิ่งนี้ นอกจากนี้ยังมีการลบหรือการตั้งค่าให้ $ (IntDir) $ (ProjectName) .pdb ทำงานให้กับเรา (ให้แน่ใจว่าจะเปลี่ยนได้สำหรับทั้งการแก้ปัญหาและการกำหนดค่าการปล่อย)
จอห์น Grabanski

4

ฉันไม่รู้ว่าใครมีปัญหาเดียวกันนี้หรือไม่ แต่คุณสมบัติของโปรเจ็กต์ของฉัน"Configuration Properties" -> C/C++ -> "Debug Information Format"ตั้งค่าเป็น "ไม่มี" และเมื่อฉันเปลี่ยนกลับเป็นค่าเริ่มต้น "ฐานข้อมูลโปรแกรม (/ Zi)" นั่นทำให้โครงการหยุดการคอมไพล์ใหม่ทุกครั้ง .


1
+1 สิ่งนี้ใช้ได้กับฉันเช่นกันใน Visual Studio 2013 โดยเฉพาะเมื่อฉันเปลี่ยนกลับเป็นไม่มีก็ใช้งานได้ดีเช่นกัน
user541686

4

วิธีง่ายๆอีกอ้างอิงโดยVisual Studio ฟอรั่ม

เปลี่ยนการตั้งค่าเมนูToolsตัวเลือกโครงการและโซลูชั่นVC ++ โครงการการตั้งค่าโหมด Explorer โซลูชันที่จะแสดงไฟล์ทั้งหมด

จากนั้นคุณสามารถดูไฟล์ทั้งหมดใน Solution Explorer

ค้นหาไฟล์ที่มีไอคอนสีเหลืองและลบออกจากโครงการ

ไม่เป็นไร.


4

Visual Studio 2013 - "บังคับให้คอมไพล์ไฟล์ต้นฉบับใหม่เนื่องจาก PDB หายไป" ฉันเปิดเอาต์พุตบิลด์แบบละเอียดเพื่อค้นหาปัญหา: ฉันเปิดใช้งานบิลด์ "Detailed" ภายใต้ "เครื่องมือ" → "โครงการและโซลูชัน" → "บิลด์และเรียกใช้"

ฉันมีหลายโครงการ C ++ ทั้งหมดฉันตั้งค่าตัวเลือกสำหรับภายใต้การตั้งค่าโครงการ: (C / C ++ →รูปแบบข้อมูลการดีบัก) เป็นฐานข้อมูลโปรแกรม (/ Zi) สำหรับโครงการที่มีปัญหา อย่างไรก็ตามสิ่งนี้ไม่ได้หยุดปัญหาสำหรับโครงการนั้น ปัญหามาจากหนึ่งในโครงการ C ++ อื่น ๆ ในการแก้ปัญหา

ฉันตั้งค่าโครงการ C ++ ทั้งหมดเป็น "ฐานข้อมูลโปรแกรม (/ Zi)" วิธีนี้แก้ไขปัญหาได้

อีกครั้งโครงการรายงานปัญหาไม่ใช่โครงการปัญหา ลองตั้งค่าโครงการทั้งหมดเป็น "ฐานข้อมูลโปรแกรม (/ Zi)" เพื่อแก้ไขปัญหา


VS2015 จะเหมือนกันเกี่ยวกับการตั้งค่าสำหรับเอาต์พุตสร้างอย่างละเอียด
LOAS

3

ฉันพบปัญหานี้ในวันนี้ แต่มันก็แตกต่างกันเล็กน้อย ฉันมีโครงการ CUDA DLL ในโซลูชันของฉัน การคอมไพล์ในโซลูชันใหม่ทั้งหมดนั้นใช้ได้ แต่ก็ล้มเหลวและคอมไพเลอร์ถือว่าโครงการ CUDA DLL เป็นข้อมูลล่าสุดเสมอ

ฉันลองวิธีแก้ปัญหาจากโพสต์นี้

แต่ไม่มีไฟล์ส่วนหัวในโซลูชันของฉัน จากนั้นฉันก็พบเหตุผลในกรณีของฉัน

ฉันได้เปลี่ยน Intermediate Directory ของโครงการมาก่อนแม้ว่ามันจะไม่ทำให้เกิดปัญหาก็ตาม และตอนนี้เมื่อฉันเปลี่ยนไดเรกทอรีระดับกลางของโครงการ CUDA DLL กลับเป็น $ (การกำหนดค่า) \ ทุกอย่างทำงานได้อีกครั้ง

ฉันเดาว่ามีปัญหาเล็กน้อยระหว่างการปรับแต่งการสร้าง CUDA และไดเรกทอรีกลางที่ไม่ใช่ค่าเริ่มต้น


ใช้ VS2013 (C #) ฉันได้ทดลองตั้งค่า IntermediateOutputPath หากสิ่งนี้ชี้ไปที่โฟลเดอร์ในไดรฟ์อื่นการแก้ปัญหาอาคารที่เพิ่มขึ้นจะหยุดทำงาน - MSBuild บ่นว่าไฟล์ต้นฉบับบางไฟล์นั้นล้าสมัยด้วยไฟล์ระดับกลางเสมอ (โดยปกติจะเป็น PDB) ดูโพสต์บล็อกของฉัน
Robert Schmidt

3

ฉันมีปัญหาที่คล้ายกันและทำตามคำแนะนำข้างต้น (คำตอบที่ยอมรับ) เพื่อค้นหาไฟล์ที่หายไป แต่ไม่ได้โดยไม่ต้องเกาหัวของฉัน นี่คือบทสรุปของสิ่งที่ฉันทำ เพื่อความถูกต้องไฟล์เหล่านี้จะไม่หายไปเนื่องจากไม่จำเป็นต้องสร้างโครงการ (อย่างน้อยในกรณีของฉัน) แต่พวกเขาอ้างถึงไฟล์ที่ไม่มีอยู่ในดิสก์ซึ่งไม่จำเป็นจริงๆ

นี่คือเรื่องราวของฉัน:

  1. ภายใต้ Windows 7 %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\%แฟ้มตั้งอยู่ที่ มีสองไฟล์ที่คล้ายกันและdevenv.exe.config.config devenv.exe.configคุณต้องการเปลี่ยนภายหลัง

  2. ใน Windows 7 คุณไม่ได้รับอนุญาตให้แก้ไขไฟล์นี้ในไฟล์โปรแกรม เพียงแค่คัดลอกที่อื่น (เดสก์ท็อป) เปลี่ยนแล้วคัดลอกกลับไปยังตำแหน่งไฟล์โปรแกรม

  3. ฉันพยายามหาวิธีเชื่อมต่อDebugViewกับ IDE เพื่อดูไฟล์ที่หายไป คุณไม่ต้องทำอะไรเลย เพียงแค่เรียกใช้และมันจะจับข้อความทั้งหมด ตรวจสอบให้แน่ใจว่าได้Capture EventsเลือกตัวเลือกCaptureเมนูในเมนูซึ่งควรเลือกไว้เป็นค่าเริ่มต้น

  4. DebugView จะไม่แสดงไฟล์ที่หายไปทั้งหมดในครั้งเดียว (อย่างน้อยก็ไม่ได้เป็นของฉัน)! คุณต้องการให้ DebugView ทำงานและรันโครงการใน Visual Studio 2010 ซึ่งจะproject out of dateแสดงข้อความให้เลือกใช่เพื่อสร้างและ DebugView จะแสดงไฟล์แรกที่หายไปหรือก่อให้เกิดการสร้างใหม่ เปิดไฟล์โครงการ (ไม่ใช่ไฟล์โซลูชัน) ใน Notepad แล้วค้นหาไฟล์นั้นและลบออก คุณควรปิดโครงการของคุณและเปิดใหม่อีกครั้งในขณะที่ทำการลบนี้ ทำซ้ำกระบวนการนี้จนกว่า DebugView จะไม่แสดงไฟล์ใด ๆ ที่หายไปอีกต่อไป

  5. การตั้งค่าตัวกรองข้อความให้ทันสมัยไม่เป็นประโยชน์จากปุ่มแถบเครื่องมือ DebugView หรือตัวเลือกแก้ไขตัวกรอง / ไฮไลต์ วิธีการที่ข้อความที่แสดงเท่านั้นเป็นข้อความที่มีสตริง 'ไม่ทันสมัย'

ฉันมีไฟล์จำนวนมากที่มีการอ้างอิงที่ไม่จำเป็นและลบพวกเขาทั้งหมดแก้ไขปัญหาตามขั้นตอนข้างต้น

วิธีที่สองเพื่อค้นหาไฟล์ที่หายไปทั้งหมดในครั้งเดียว

มีวิธีที่สองในการค้นหาไฟล์เหล่านี้ทั้งหมดในครั้งเดียว แต่เกี่ยวข้องกับ (a) การควบคุมแหล่งที่มาและ (b) การรวมกับ Visual Studio 2010 โดยใช้ Visual Studio 2010 โดยใช้ Visual Studio 2010เพิ่มโครงการของคุณไปยังตำแหน่งที่ต้องการหรือตำแหน่งจำลองในแหล่งที่มา ควบคุม. มันจะพยายามเพิ่มไฟล์ทั้งหมดรวมถึงไฟล์ที่ไม่มีอยู่ในดิสก์เช่นกัน แต่อ้างอิงในไฟล์โครงการ ไปที่ซอฟต์แวร์ควบคุมแหล่งที่มาของคุณเช่นPerforceและควรทำเครื่องหมายไฟล์เหล่านี้ซึ่งไม่มีอยู่ในดิสก์ในโทนสีที่แตกต่างกัน Perforce แสดงให้พวกเขาเห็นด้วยล็อคสีดำ นี่คือการอ้างอิงที่ขาดหายไปของคุณ ตอนนี้คุณมีรายชื่อของพวกเขาทั้งหมดและคุณสามารถลบทั้งหมดของพวกเขาจากแฟ้มโครงการของคุณโดยใช้ Notepad และโครงการของคุณจะไม่บ่นเกี่ยวกับการออกจากวันที่


2

สำหรับฉันมันคือการมีไฟล์ส่วนหัวที่ไม่มีอยู่ใน "ไฟล์ส่วนหัว" ในโครงการ หลังจากลบรายการนี้ (คลิกขวา> ยกเว้นจากโครงการ) ครั้งแรกที่คอมไพล์ใหม่จากนั้นโดยตรง

========== Build: 0 สำเร็จ, 0 ล้มเหลว, 5 up-to-date, 0 ข้ามไป ==========

และไม่พยายามสร้างใหม่โดยไม่มีการแก้ไข ฉันคิดว่าเป็นตัวตรวจสอบก่อนการสร้างที่นำมาใช้โดย VS2010 (ไม่แน่ใจว่ามีเอกสารหรือไม่) ซึ่งเป็นต้นเหตุของการตั้งค่าสถานะ "AlwaysCreate"


2

หากคุณใช้คำสั่ง MSBuild ในบรรทัดคำสั่ง (ไม่ใช่ Visual Studio IDE) ตัวอย่างเช่นหากคุณกำหนดเป้าหมาย AppVeyor หรือคุณต้องการใช้บรรทัดคำสั่งคุณสามารถเพิ่มตัวเลือกนี้ในบรรทัดคำสั่ง MSBuild ของคุณ:

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

ดังที่บันทึกไว้ที่นี่ (คำเตือน: ปกติใช้คำฟุ่มเฟือยของ MSDN) เมื่อสร้างเสร็จสิ้นการค้นหาสำหรับสตริงในล็อกไฟล์ที่สร้างขึ้นในระหว่างการสร้างที่will be compiledMyLog.log


1
/ verbosity: รายละเอียดจะให้ข้อมูลเดียวกัน แต่ไม่เหมือน verbose จากนั้นคุณสามารถค้นหา "จะถูกรวบรวมเป็น"
Shane Gannon

1
คุณควรค้นหา "จำเป็นต้องมีการรวบรวมแหล่งที่มา" ซึ่งจะพบลิงก์ด้วย
Shane Gannon

2

ฉันใช้ Visual Studio 2013 Professional พร้อมอัปเดต 4 แต่ไม่พบวิธีแก้ปัญหาด้วยคำแนะนำอื่นใดอย่างไรก็ตามฉันจัดการเพื่อแก้ไขปัญหาสำหรับโปรเจ็กต์ทีมของฉัน

นี่คือสิ่งที่ฉันทำเพื่อทำให้เกิดปัญหา -

  • สร้างวัตถุคลาสใหม่ (โครงการ -> เพิ่มคลาส)
  • เปลี่ยนชื่อไฟล์ผ่าน Solution Explorer และคลิกใช่เมื่อถูกถามว่าฉันต้องการเปลี่ยนชื่อการอ้างอิงทั้งหมดให้ตรงกันโดยอัตโนมัติหรือไม่

นี่คือสิ่งที่ฉันทำเพื่อแก้ไขปัญหา -

  • ไปที่หน้าแรกของ Team Explorer
  • คลิก Explorer การควบคุมแหล่งที่มา
  • เจาะลึกลงในโฟลเดอร์ที่มีไฟล์คลาส / โครงการทั้งหมด
  • พบชื่อไฟล์ต้นฉบับในรายการและลบทิ้งด้วยการคลิกขวา
  • สร้าง

หากเป็นกรณีนี้สำหรับคุณให้แน่ใจว่าคุณกำลังลบไฟล์แฟนทอมมากกว่าไฟล์จริงที่คุณต้องการเก็บไว้ในโครงการ


1

ฉันมีปัญหานี้และพบสิ่งนี้:

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

Visual c ++ โครงการล้าสมัยอย่างต่อเนื่อง ( winwlm.h macwin32.h rpcerr.h macname1.hหายไป)

ปัญหา:

ใน Visual 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'.  

โครงการของคุณอาจยังคงสร้าง แต่อาจปรากฏต่อไปจนกว่าจะพบไฟล์นี้

สารละลาย:

รวมafxres.hแทนที่จะresource.hเป็นไฟล์. rc ภายในโครงการ

ไฟล์. rc ของโครงการมี "#include resource.h" เนื่องจากคอมไพเลอร์ทรัพยากรไม่ให้เกียรติ#ifdefบล็อกตัวประมวลผลก่อนมันจะฉีกขาดและพยายามค้นหาไฟล์ที่ควรละเว้น Windows.h มีบล็อกดังกล่าวจำนวนมาก การรวม afxres.h แทนแก้ไขคำเตือน PRJ0041 และตัดการโต้ตอบข้อผิดพลาด "Project is ล้าสมัย"


1

ในกรณีของฉันโครงการหนึ่งมีหลายไฟล์ IDL คอมไพเลอร์ MIDL สร้างไฟล์ข้อมูล DLL ชื่อ 'dlldata.c' สำหรับแต่ละไฟล์โดยไม่คำนึงถึงชื่อไฟล์ IDL สิ่งนี้ทำให้ Visual Studio รวบรวมไฟล์ IDL ในทุกบิลด์แม้ว่าจะไม่มีการเปลี่ยนแปลงกับไฟล์ IDL ใด ๆ ก็ตาม

วิธีแก้ปัญหาคือการกำหนดค่าไฟล์เอาต์พุตที่ไม่ซ้ำกันสำหรับแต่ละไฟล์ IDL (คอมไพเลอร์ MIDL สร้างไฟล์เช่นนี้เสมอแม้ว่าจะไม่มีการปิดสวิตช์ / dlldata):

  • คลิกขวาที่ไฟล์ IDL
  • เลือกคุณสมบัติ - MIDL - เอาต์พุต
  • ป้อนชื่อไฟล์ที่ไม่ซ้ำสำหรับคุณสมบัติไฟล์ DllData

1

ฉันใช้เวลาหลายชั่วโมงในการฉีกผมของฉันมากกว่านี้ สร้างผลลัพธ์ไม่สอดคล้องกัน โครงการที่แตกต่างกันจะเป็น "ไม่ทันสมัย" ด้วยเหตุผลที่แตกต่างจากรุ่นต่อไปจนถึงรุ่นต่อไป ในที่สุดฉันก็พบว่าผู้กระทำผิดคือDropBox (3.0.4) ฉันแยกโฟลเดอร์ซอร์สของฉันจาก ... \ DropBox ลงในโฟลเดอร์โปรเจ็กต์ของฉัน (ไม่แน่ใจว่านี่คือเหตุผล) แต่ DropBox "แตะ" ไฟล์อย่างใดในระหว่างการสร้าง การซิงค์ที่หยุดชั่วคราวและทุกอย่างทันสมัยอยู่เสมอ


1

มีเหตุผลที่เป็นไปได้ค่อนข้างน้อยและ - ดังที่ระบุไว้ - คุณต้องวินิจฉัยพวกเขาก่อนโดยการตั้งค่า MSBuild verbosity เป็น 'การวินิจฉัย' ส่วนใหญ่เหตุผลที่ระบุไว้จะอธิบายด้วยตนเองและคุณสามารถดำเนินการได้ทันที แต่บางครั้ง MSBuild จะอ้างว่ามีการแก้ไขไฟล์บางไฟล์อย่างไม่ถูกต้องและจำเป็นต้องคัดลอก

หากเป็นกรณีนี้คุณจะต้องปิดการใช้งานการขุดอุโมงค์ NTFS หรือทำซ้ำโฟลเดอร์ผลลัพธ์ของคุณไปยังตำแหน่งใหม่ นี่มันอยู่ในคำพูดมากขึ้น


1

เรื่องนี้เกิดขึ้นกับฉันหลายครั้งแล้วก็จากไปก่อนที่ฉันจะเข้าใจได้ว่าทำไม ในกรณีของฉันมันเป็น:

เวลาระบบผิดในการตั้งค่าการบู๊ตคู่!

ปรากฎว่าการบูทคู่กับอูบุนตูเป็นสาเหตุหลัก !! ฉันขี้เกียจเกินกว่าที่จะแก้ไข Ubuntu ให้หยุดยุ่งกับนาฬิกาฮาร์ดแวร์ของฉัน เมื่อฉันลงชื่อเข้าใช้ Ubuntu เวลาจะข้ามไปข้างหน้า 5 ชั่วโมง

ด้วยความโชคร้ายฉันได้สร้างโครงการหนึ่งครั้งด้วยเวลาของระบบที่ไม่ถูกต้องจากนั้นแก้ไขเวลา เป็นผลให้ไฟล์บิลด์ทั้งหมดมีการประทับเวลาผิดและ VS จะคิดว่ามันล้าสมัยแล้วและจะสร้างโครงการใหม่


1

ระบบบิลด์ส่วนใหญ่จะใช้การประทับเวลาของข้อมูลเพื่อพิจารณาว่าควรจะสร้างใหม่เมื่อใด - การประทับวันที่ / เวลาของไฟล์เอาต์พุตใด ๆ จะถูกตรวจสอบกับเวลาที่แก้ไขล่าสุดของการพึ่งพา - หากการพึ่งพาใด ๆ นั้นสดกว่าเดิม

สิ่งนี้อาจทำให้เกิดปัญหาได้หากการอ้างอิงใด ๆ ได้รับการประทับเวลาของข้อมูลที่ไม่ถูกต้องเนื่องจากเป็นการยากสำหรับการประทับเวลาของเอาต์พุตการสร้างใด ๆ ที่เกินเวลาประทับของไฟล์ที่สร้างขึ้นในอนาคต: P


เป็นไปได้ไหมที่สาเหตุที่ VS2010 บังคับให้สร้างใหม่หรือคิดว่าโปรเจ็กต์นั้นอัปเกรดแล้ว?
Chris U

ใน VS6 หรือ VS2005 อาจมีไดอะล็อกคุณสมบัติแปลก ๆ เกิดขึ้นเมื่อคลิกขวาที่โปรเจ็กต์ที่มีแท็บแสดงการขึ้นต่อกันและเอาต์พุตของแต่ละไฟล์ในโปรเจ็กต์ ฉันไม่รู้วิธีรับรายงานที่เทียบเท่าใน VS2008 (หรือ VS2010)
Chris Becke

1

สำหรับฉันปัญหาเกิดขึ้นในโครงการ WPF ที่ไฟล์บางไฟล์มีคุณสมบัติ 'Build Action' ตั้งค่าเป็น 'ทรัพยากร' และ 'คัดลอกไปยังไดเรกทอรีไดเรกทอรีผลลัพธ์' ตั้งค่าเป็น 'คัดลอกถ้าใหม่กว่า' วิธีแก้ไขดูเหมือนจะเปลี่ยนคุณสมบัติ 'คัดลอกไปยังไดเรกทอรีไดเรกทอรี' เป็น 'ห้ามคัดลอก'

msbuild รู้ว่าจะไม่คัดลอกไฟล์ 'ทรัพยากร' ไปยังเอาต์พุต แต่ก็ยังทำให้เกิดการสร้างหากพวกเขาไม่ได้อยู่ที่นั่น อาจจะถือได้ว่าเป็นข้อผิดพลาดหรือไม่?

มันมีประโยชน์อย่างมากกับคำตอบที่นี่ซึ่งบอกใบ้ถึงวิธีการสร้าง msbuild เพื่อทำให้ถั่วหกว่าทำไมมันสร้างทุกอย่าง!


0

หากคุณเปลี่ยนอาร์กิวเมนต์คำสั่งดีบั๊กสำหรับโครงการสิ่งนี้จะทริกเกอร์โครงการที่จำเป็นต้องสร้างข้อความใหม่ แม้ว่าเป้าหมายเองจะไม่ได้รับผลกระทบจากการโต้แย้งการดีบักคุณสมบัติของโครงการจะเปลี่ยนไป หากคุณสร้างใหม่ข้อความควรหายไป


0

ฉันมีปัญหาที่คล้ายกันกับ Visual Studio 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 ต้องการบิวด์แบบเต็มแม้หลังจากคลีนแบบเต็มแล้วก็สร้างโซลูชันขึ้นมาใหม่

ฉันแก้ไขสิ่งนี้โดยทำให้มั่นใจว่าpdbไฟล์เอาต์พุตของทั้ง C / C ++ และ linker ตรงกับตำแหน่งที่ใช้โดยโครงการทำงานอื่น ๆ ฉันเปิด RTTI ด้วย


0

อีกรายการหนึ่งใน Visual Studio 2015 SP3 แต่ฉันพบปัญหาที่คล้ายกันใน Visual Studio 2013 ไม่กี่ปีหลัง

ปัญหาของฉันคือไฟล์ cpp ไม่ถูกต้องถูกใช้สำหรับส่วนหัวที่คอมไพล์แล้ว (ดังนั้นฉันจึงมีไฟล์ cpp สองไฟล์ที่สร้างส่วนหัวที่คอมไพล์แล้ว) ตอนนี้เหตุใด Visual Studio จึงเปลี่ยนสถานะบน cpp ผิดให้เป็น 'สร้างส่วนหัวที่คอมไพล์แล้ว' โดยไม่ต้องมีการร้องขอฉันไม่มีเงื่อนงำ แต่มันเกิดขึ้น ... บางทีปลั๊กอินหรืออะไรบางอย่าง ???

อย่างไรก็ตามไฟล์ cpp ที่ผิดรวมถึงไฟล์ version.h ซึ่งมีการเปลี่ยนแปลงในทุกบิลด์ ดังนั้น Visual Studio จะสร้างส่วนหัวทั้งหมดอีกครั้งและเนื่องจากโครงการทั้งหมด

ทีนี้มันกลับมาเป็นพฤติกรรมปกติ


0

ฉันมีโครงการ VC ++ ที่มักจะรวบรวมไฟล์ทั้งหมดและเคยอัพเกรดจาก VS2005 เป็น VS2010 (โดยบุคคลอื่น) ฉันพบว่าไฟล์ cpp ทั้งหมดในโครงการยกเว้น StdAfx.cpp ถูกตั้งค่าเป็น Create (/ Yc) ส่วนหัวที่คอมไพล์แล้ว ฉันเปลี่ยนสิ่งนี้เพื่อให้เฉพาะ StdAfx.cpp ถูกตั้งค่าเพื่อสร้างส่วนหัว precompiled และส่วนที่เหลือถูกตั้งค่าเป็น Use (/ Yu) ส่วนหัวของ precompiled และสิ่งนี้แก้ไขปัญหาให้ฉันได้


0

ฉันใช้ Visual Studio 2013 และเพิ่งอัปเดตเป็น Windows 10 พฤษภาคม 2019 อัปเดตและการคอมไพล์ก็ต้องทำซ้ำทุกครั้งโดยไม่คำนึงถึงการเปลี่ยนแปลง พยายามเปลี่ยนชื่อ pch เป็น ProjectName แทน TargetName ค้นหาไฟล์ที่หายไปพร้อมกับบันทึกรายละเอียดและสคริปต์ Python แต่ท้ายที่สุดแล้วมันเป็นเวลาที่ฉันไม่ได้ซิงค์กับเซิร์ฟเวอร์ของ MS (เหมือนมิลลิวินาที)

สิ่งที่แก้ไขได้สำหรับฉันคือ

  • "ปรับวันที่และเวลา" ในแผงควบคุม
  • "ซิงค์เลย"

ตอนนี้โครงการของฉันไม่จำเป็นต้องทำการคอมไพล์ใหม่โดยไม่มีเหตุผล


0

ฉันคิดว่าคุณวางบรรทัดใหม่หรือช่องว่างอื่น ลบออกและกด F5 อีกครั้ง


-3

โครงการ. NET มักจะคอมไพล์ใหม่โดยไม่คำนึงถึง ส่วนหนึ่งของสิ่งนี้คือการทำให้ IDE เป็นปัจจุบัน (เช่น IntelliSense) ฉันจำได้ว่าถามคำถามนี้ในฟอรัม Microsoft เมื่อหลายปีก่อนและนี่คือคำตอบที่ฉันได้รับ


1
ใน VS2008 โครงการไม่ได้สร้างใหม่ทุกครั้ง นี่เป็นเรื่องที่น่ารำคาญมากเพราะ dll นั้นเป็นระดับที่ต่ำมากและบังคับให้ dll ที่ฉันสร้างใหม่เกือบทั้งหมด มีบางอย่างผิดพลาดในการย้ายถิ่นและฉันไม่สามารถหาสาเหตุได้
Chris U

2
2008, 2010, 2012 และ 2013 จะไม่สร้าง. NET โครงการใหม่ทุกครั้ง
paulm

มีการรวบรวมพื้นหลังที่เกิดขึ้น (และจำไว้ว่าคำตอบนี้มีอายุ 10 ปี) เพื่อให้การทำงานของระบบทางเดินหายใจ I
Preet Sangha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.