Visual Studio 2010 her zaman projenin güncel olmadığını düşünüyor, ancak hiçbir şey değişmedi


194

Burada anlatıldığı gibi çok benzer bir sorunum var .

Ayrıca C ++ / CLI ve C # projelerinin karışık bir çözümünü Visual Studio 2008'den Visual Studio 2010'a yükselttim. Ve şimdi Visual Studio 2010'da bir C ++ / CLI projesi her zaman güncelliğini yitirdi.

Daha önce derlenmiş ve bağlanmış olsa da F5ve vurulduysa bile, "Proje güncel değil. Oluşturmak ister misiniz?" belirir. DLL dosyası çok düşük seviyeli olduğundan ve çözümün neredeyse tüm projelerini yeniden oluşturmaya zorladığı için bu çok can sıkıcı bir durum.

PDB ayarlarım varsayılan değere ayarlandı ( bu sorunun önerilen çözümü ).

Visual Studio 2010'un bir yeniden yapılandırmayı zorlaması veya bir projenin güncel olduğunu düşünmesinin nedenini almak mümkün müdür?

Visual Studio 2010'un neden böyle davrandığı hakkında başka fikirleriniz mi var?



Yanıtlar:


224

Yalnızca Visual Studio / Express 2010 için. VS2012, VS2013, vb. İçin diğer (daha kolay) cevaplara bakın

Eksik dosyaları bulmak için Visual Studio'da hata ayıklama günlüğünü etkinleştirmek için C ++ proje sistemi günlüğünü etkinleştir'i etkinleştirin ve yeniden oluşturmaya neyin neden olduğunu söylemesine izin verin makalesindeki bilgileri kullanın :

  1. devenv.exe.configDosyayı açın (içinde %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\veya içinde bulunur %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\). Express sürümleri için yapılandırma dosyası adlandırılır V*Express.exe.config.
  2. Satırdan sonra aşağıdakileri ekleyin </configSections>:

    <system.diagnostics>
      <switches>
        <add name="CPS" value="4" />
      </switches>
    </system.diagnostics>
    
  3. Visual Studio'yu yeniden başlat
  4. DbgView'ı açın ve hata ayıklama çıktısını aldığından emin olun
  5. Hata ayıklamaya çalışın (Visual Studio'da F5 tuşuna basın)
  6. Hata ayıklama günlüğünde formun herhangi bir satırını arayın:

    devenv.exe Bilgileri: 0: 'Bla \ Bla \ SomeFile.h' yapı girdisi eksik olduğu için 'Bla \ Bla \ Dummy.vcxproj' projesi güncel değil.

    (Ctrl + F tuşlarına basıp aradım not up to date) Bunlar projenin sürekli "güncelliğini yitirmesine" neden olacak referanslar olacak.

Bunu düzeltmek için, eksik dosyalara olan referansları projenizden kaldırın veya referansları gerçek konumlarını gösterecek şekilde güncelleyin.

Not: 2012 veya daha yenisini kullanıyorsanız snippet şöyle olmalıdır:

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

4
> DbgView uygulamasını açın ve hata ayıklama çıktısını aldığından emin olun. Yakalamanın başlatıldığından nasıl emin olunur? Yeniden inşa projelerinde de aynı sorun var. Ancak DebugView'da herhangi bir bilgi yoktur. DebugView'un 'Yakala' menüsünde ilk 5 seçeneği etkinleştirdim. (Ve cevaplardaki iyi bağlantılar için teşekkürler!)
sergtk

3
Bu, onu anlamamıza yardımcı oldu; Bununla birlikte, aynı zamanda, son StdAfx.obj? Her neyse, tüm ara derleme klasörlerini sildikten ve proje dosyalarını temizledikten sonra da gitmeye hazırız.
AH

2
Teşekkür ederim - şimdi neden normal çıktı penceresinde yok?
Martin Beckett

4
VS2012 kullanıyorsanız, yapılandırma dosyasına yapıştırmak için biraz farklı bir snippet vardır. Bu orijinal makaleden bağlantılıdır, ancak her ihtimale karşı: VS2012
rmaVT

3
FYI, bu artık VS2013'te çalışmıyor gibi görünüyor - yapılandırma dosyasını düzenledikten sonra, DebugView'da ilgi çekici bir şey oluşturmuyor.
Nathan Reed

166

Visual Studio 2012'de aynı sonucu kabul edilen çözümden daha kolay elde ettim.

Ben menü seçeneği değişti AraçlarSeçeneklerProjeleri ve ÇözümlerBuild'a ve çalıştır dan → * MSBuild proje inşa çıktı ayrıntı" Minimal için Teşhis .

Sonra derleme çıktısında "güncel değil" arayarak aynı satırları buldum:

'Blabla' projesi güncel değil. 'C: \ foo \ bar.xml' proje öğesinde 'Her zaman kopyala' olarak ayarlanmış 'Çıktı Dizine Kopyala' özelliği var.


6
Bu, yapılandırma dosyası çimdiklerinin artık çalışmadığı VS2013'te de çalışır.
Nathan Reed

1
Bu benim için çok işe yaradı. Her seferinde çözümün çoğunun oluşturulmasına neden olan dairesel bir referansım vardı (project1 -> project2, project2 -> project1.dll). Kullanımda bile değildi.
Kobi

7
C # ile, "güncel değil" ile hiçbir şey bulamadım, sihirli kelime "daha yeni" gibi görünüyor
Pete

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

3
VS2013'te was modified attanılama modunda da arama yapmanız gerekebilir, çünkü çıkışım yoktu not up to date.
jaba

59

Bu bana bugün oldu. Nedeni izleyebildim: Proje artık diskte bulunmayan bir başlık dosyası içeriyordu.

Dosyayı projeden kaldırmak sorunu çözdü.


2
Hayır, diskte mevcut olmayan başlık dosyam yok. Fakat sebebi nasıl bulabildiniz? Eksik bir dosya olduğunu nasıl öğrendiniz? Belki de senin gibi kontrol ederek sorunum hakkında daha fazla şey bulabilirim.
Chris U

1
Bu benim başıma geldiğinde farklı bir çözüm vardı. Muhtemelen oldukça belirsiz, ama projeyi bir bilgisayardan, sonra başka bir bilgisayardan derliyordum ve yanlışlıkla bir bilgisayarda AM'ye ve diğer bilgisayarda PM'ye zaman ayarlayacağımı keşfettim. Büyük zaman farkı, bilgisayarlardan birinin her zaman her şeyi derlemesine ya da kaynak dosyaları değiştirdiğimde bile hiçbir şey derlememesine neden oldu.
Kyle

1
Bu, başlık dosyasına rağmen benim için çalıştı. Günlüğe kaydetmeyi etkinleştirmek için aşağıdaki yanıtı kullanarak bir başlık dosyasının eksik olduğunu düşündü. Bağımlılığını kaldırdım, tekrar ekledim ve minimal yeniden oluşturma tekrar çalıştı!
Ed Bayiates

Saat çarpıklığı çoğu yapı sisteminin patlamasına neden olur
paulm

15

Ayrıca bu sorunla karşılaştık ve nasıl çözüleceğini öğrendik.

Sorun yukarıda belirtildiği gibi "Dosya artık diskte yok."

Bu tam olarak doğru değil. Dosya diskte var, ancak .VCPROJ dosyası başka bir yere başvuruyor.

"Dosya görünümünü ekle" ye gidip Visual Studio'nun bulamadığı dosyayı bulana kadar her bir içerme dosyasına tıklayarak bunu "keşfedebilirsiniz". Daha sonra bu dosyayı (mevcut bir öğe olarak) EKLEYİN ve bulunamayan referansı silin ve her şey yolunda.

Geçerli bir soru şudur: Visual Studio, içerme dosyalarının nerede olduğunu bilmiyorsa nasıl oluşturulur?

.Vcproj dosyasının, Visual Studio GUI'sinde gösterilmeyen bir yerde rahatsız edici dosyaya göreceli bir yolu olduğunu düşünüyoruz ve bu, içerilen öğelerin ağaç görünümü yanlış olsa bile projenin neden gerçekten oluşturulacağını açıklıyor.


4
VC'nin oluşturabilmesinin nedeni, başlık dosyaları olmalarıdır ve başlık dosyaları aslında derlenmez. Üstbilgi dosyalarından herhangi biri gerçekten bir .C / .CPP dosyası tarafından kullanılıyorsa, derleme başarısız olur. Böylece bağımlılık denetleyicisi (başlık dosyasını arar) projeyi yeniden oluşturma ihtiyacı olarak işaretler, ancak asıl derleyici (yalnızca başlık dosyalarının listesini yok sayar) başarılı olabilir.
AH

4
İnanılmaz bir şekilde ... bu , .vcxproj dosyanızda bir metin dosyasına (eğer varsa bile derlemenin bir parçası bile değil!) Eski bir referansınız varsa da olur . Sihirbazla bir proje oluşturmuştum ve diskten sildiğim, ancak vcxproj'dan kaldırmayı unuttuğum bir ReadMe.txt dosyası içeriyordu.
DLRdave

Açamadığım herhangi bir dosya bulamıyorum (biri hariç, ancak sabit diskte. Bu tür bir dosya Visual Studio 2010 Express SKU veya bunun gibi bir şey açılamıyor diyor.
Anonim Penguen

2
"Dosya görünümünü dahil et" nedir ve nasıl görünürsünüz?
Ben

1
Dosya Görünümünü Dahil Et , belki de Çözüm Gezgini'ndeki Dosyaları Dahil Et bölümüdür.
Jaywalker

12

Kabul edilen cevap, çalışmaya başlamak zorunda kaldığım berbat proje için bu sorunun nasıl çözüleceğini bulmamda bana yardımcı oldu. Ancak, çok sayıda kötü dahil başlıkları ile uğraşmak zorunda kaldı. Ayrıntılı hata ayıklama çıktısıyla, birinin kaldırılması, IDE'nin 30 saniye boyunca donmasına neden olurken, hata ayıklama güvesi çıktı ve bu da sürecin çok yavaş gitmesine neden oldu.

Sabırsız oldum ve benim için (Visual Studio 2010) proje dosyalarını kontrol etmek ve tüm eksik dosyaları bir kerede, içinde bulundukları filtreler ile birlikte kontrol etmek için hızlı ve kirli bir Python betiği yazdım. Buradan yararlanın: https://gist.github.com/antiuniverse/3825678 (veya göreli yolları destekleyen bu çatal )

Misal:

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)
  ...

Kaynak kodu:

#!/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 + ")")

Kodunuzu göreli yolları destekleyecek şekilde değiştirdi. Gistinizi güncellemek ve çatalımın bağlantısını kaldırmaktan çekinmeyin!
ixe013

Bu benim için harika çalıştı! Ne zaman tasarrufu! Teşekkürler! Ben ne yanlış olduğunu söyledi tanı çıktı HİÇBİR ŞEY vardı ama yardımcı programı bana gösterdi!
Ed Bayiates

Bir dir numaralandırma ve her bulunan vcxproj gist.github.com/paulsapps/4992d2d460f4ef44538d62c9e875ca78
paulm

8

Bir cpp ve bazı başlık dosyalarını çözümden (ve diskten) sildim ama yine de sorun vardı.

Şey, derleyicinin kullandığı her dosya geçici dizininizdeki bir * .tlog dosyasına gider. Bir dosyayı kaldırdığınızda, bu * .tlog dosyası güncelleştirilmez. Projenizin güncel olup olmadığını kontrol etmek için artımlı derlemeler tarafından kullanılan dosya budur.

Bu .tlog dosyasını el ile düzenleyin veya projenizi temizleyin ve yeniden oluşturun.


Bu benim içindi! Eksik dahil dosyaları düzelttikten sonra saat geçirdim, STILL güncel değil, günlükte eksik olan şey için sonuçsuz çöp gösterdi. Bu TLOG dosyalarından kurtulmak için gerekli! Teşekkürler!
Ed Bayiates

6

Benzer bir sorun vardı, ama benim durumumda eksik dosya yoktu, pdb çıktı dosyasının nasıl tanımlandığı bir hata vardı: .pdb son ekini unuttum (hata ayıklama günlüğü hilesi ile öğrendim).

Sorunu çözmek için vxproj dosyasında aşağıdaki satırı değiştirdim:

<ProgramDataBaseFileName>MyName</ProgramDataBaseFileName>

için

<ProgramDataBaseFileName>MyName.pdb</ProgramDataBaseFileName>

6

VS2013 (Güncelleme 5) bu sorun vardı ve her ikisi de "Araçlar" -> "Projeler ve Çözümler" -> "Oluştur ve Çalıştır" altında "Ayrıntılı" yapı çıktı etkinleştirerek bulabileceğiniz iki nedeni olabilir .

  1. "Forcing recompile of all source files due to missing PDB "..."
    Bu, derleyici seçeneklerinizde hata ayıklama bilgisi çıktısını devre dışı bıraktığınızda gerçekleşir (Proje ayarları altında: “C / C ++“ -> “Hata Ayıklama Bilgi Biçimi”, “Hiçbiri” ve „Bağlayıcı“ -> “Hata Ayıklama Bilgisi Oluştur”, “Hayır” olarak:) . „C / C ++“ -> “Program Veritabanı Dosya Adı” nı varsayılan olarak (“$ (IntDir) vc $ (PlatformToolsetVersion) .pdb“) bıraktıysanız, VS bir hata ( https) nedeniyle dosyayı bulamaz : //connect.microsoft.com/VisualStudio/feedback/details/833494/project-with-debug-information-disabled-always-rebuilds ).
    Düzeltmek için dosya adını "" (boş alan) olarak temizleyin.

  2. "Forcing rebuild of all source files due to a change in the command line since the last build."
    Bu da bilinen bir VS hatası gibi görünüyor ( https://connect.microsoft.com/VisualStudio/feedback/details/833943/forcing-rebuild-of-all-source-files-due-to-a-change-in- the-command-line-last-since-last-build ) ve daha yeni sürümlerde düzeltilmiş gibi görünüyor (VS2013 değil). Hiçbir geçici çözüm bilmiyordum, ancak bunu yaparsanız, buraya gönderin.


1
Bu yüzden benim sorunum. "Güncel değil" mesajlarının hiçbiri nerede benim ve bunu takip etmek bizim için sonsuza kadar sürdü. Ayrıca kaldırmak veya $ (IntDir) $ (ProjectName) .pdb olarak ayarlamak bizim için çalıştı (hem hata ayıklama hem de sürüm yapılandırmaları için değiştirdiğinizden emin olun)
John Grabanski

4

Başkasının aynı sorunu olup olmadığını bilmiyorum, ama benim proje özellikleri "Configuration Properties" -> C/C++ -> "Debug Information Format""Yok" olarak ayarlanmıştı ve ben varsayılan "Program Veritabanı (/ Zi)", her zaman yeniden derleme proje geri döndü .


1
Benim için 1 bu eserler de, bunu geçmek Özellikle Visual Studio 2013, olduğu gibi geri Yok, buna da ince tekrar çalışır.
user541686

4

Visual Studio Forum tarafından başvurulan başka bir basit çözüm .

Yapılandırmayı değiştirme: menü AraçlarSeçeneklerProjeler ve ÇözümlerVC ++ Proje AyarlarıTüm dosyaları göstermek için Çözüm Gezgini Modu .

Sonra tüm dosyaları Solution Explorer'da görebilirsiniz.

Sarı simgeyle işaretlenmiş dosyaları bulun ve projeden kaldırın.

Tamam.


4

Visual Studio 2013 - "eksik PDB nedeniyle tüm kaynak dosyaları yeniden derleme zorlama". Sorunu bulmak için ayrıntılı derleme çıktısını açtım: "Araçlar" → "Projeler ve Çözümler" → "Derle ve Çalıştır" altında "Ayrıntılı" derleme çıktısını etkinleştirdim.

Birkaç proje vardı, tüm C ++, proje ayarları altında seçeneğini ayarladım: (C / C ++ → Hata ayıklama bilgi biçimi) sorun proje için Program veritabanı (/ Zi). Ancak, bu proje için sorunu durdurmadı. Sorun, çözümdeki diğer C ++ projelerinden birinden geldi.

Tüm C ++ projelerini "Program Veritabanı (/ Zi)" olarak ayarladım . Bu sorunu düzeltti.

Yine, sorunu bildiren proje sorun projesi değildi. Sorunu çözmek için tüm projeleri "Program Veritabanı (/ Zi)" olarak ayarlamayı deneyin.


VS2015, ayrıntılı derleme çıktısı ayarı ile aynı
LOAS

3

Bugün bu problemle karşılaştım, ancak biraz farklıydı. Çözümümde bir CUDA DLL projesi vardı. Temiz bir çözüm derleme Tamam, ama aksi takdirde başarısız oldu ve derleyici her zaman güncel değil gibi CUDA DLL proje tedavi.

Çözümü bu yazıda denedim .

Ancak çözümümde eksik başlık dosyası yok. Sonra davamın nedenini öğrendim.

Sorun yaratmasa da, daha önce projenin Orta Dizinini değiştirdim. Ve şimdi CUDA DLL Project'in ara dizinini $ (Configuration) \ olarak değiştirdiğimde, her şey yeniden çalışıyor.

CUDA Build Customization ve varsayılan olmayan Ara Dizin arasında küçük bir sorun var sanırım.


VS2013 (C #) kullanarak, IntermediateOutputPath ayarını denedim. Bu, farklı bir sürücüdeki bir klasöre işaret ederse, çözüm, artımlı bina çalışmayı durdurur - MSBuild, bazı kaynak dosyaların bazı ara dosyalarla (genellikle PDB) her zaman güncel olmadığını bildirir. Blog gönderime bakın .
Robert Schmidt

3

Benzer bir sorun yaşadım ve eksik dosyaları bulmak için yukarıdaki talimatları (kabul edilen cevap) takip ettim, ancak başımı çizmeden. İşte ne yaptığımın özeti. Doğru olmak için bunlar eksik dosyalar değildir, çünkü proje tarafından inşa edilmeleri gerekli değildir (en azından benim durumumda), ancak diskte gerçekten gerekli olmayan dosyalara referanslar.

İşte benim hikayem:

  1. Windows 7 altında dosya bulunmaktadır %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\%. İki benzer dosya vardır devenv.exe.config.configve devenv.exe.config. Daha sonra değiştirmek istiyorsun.

  2. Windows 7 altında, bu dosyayı program dosyalarında olan düzenleme izniniz yok. Başka bir yere kopyalayın (masaüstü) değiştirin ve program dosyalarının bulunduğu konuma geri kopyalayın.

  3. Eksik dosyaları görmek için IDE DebugView bağlamak nasıl anlamaya çalışıyordu . Hiçbir şey yapmanıza gerek yok. Sadece çalıştırın ve tüm mesajları yakalayacaktır. Capture EventsMenüde Capturevarsayılan olarak seçilmesi gereken menü seçeneğinin seçili olduğundan emin olun .

  4. DebugView tüm eksik dosyaları bir kerede GÖSTERMEZ (en azından benim için değil)! DebugView çalıştıracak ve projeyi Visual Studio 2010'da çalıştıracaksınız. Bu project out of dateileti görüntülenir, oluşturmak için Evet'i seçin ve DebugView eksik olan veya yeniden oluşturmaya neden olan ilk dosyayı gösterecektir . Proje dosyasını (çözüm dosyası değil) Not Defteri'nde açın ve bu dosyayı arayın ve silin. Bu silme işlemini yaparken projenizi kapatıp yeniden açmanız daha iyi olur. DebugView artık eksik dosya göstermeyene kadar bu işlemi tekrarlayın.

  5. İleti filtresini DebugView araç çubuğu düğmesinden veya DüzenleFiltre / Vurgula seçeneğinden güncel olmayacak şekilde ayarlamak faydalı olabilir . Bu şekilde görüntülediği tek ileti, içinde 'güncel olmayan' dizesi olan iletidir.

Gereksiz referanslar olan çok sayıda dosyam vardı ve hepsini kaldırmak yukarıdaki adımları izleyerek sorunu çözdü.

Tüm eksik dosyaları bir kerede bulmanın ikinci yolu

Bu dosyaları bir kerede bulmanın ikinci bir yolu var, ancak (a) kaynak kontrolü ve (b) Visual Studio 2010 ile entegrasyonu içeriyor. Visual Studio 2010'u kullanarak projenizi istenen bir konuma veya kaynakta kukla bir konuma ekleyin kontrol. Diskte bulunmayan, ancak proje dosyasında belirtilenler de dahil olmak üzere tüm dosyaları eklemeye çalışır. Perforce gibi kaynak kontrol yazılımınıza gidin ve diskte bulunmayan bu dosyaları farklı bir renk şemasında işaretlemelidir. Performans onlara siyah bir kilit ile gösterir. Bunlar eksik referanslarınız. Şimdi hepsinin bir listesi var ve hepsini Not Defteri'ni kullanarak proje dosyanızdan silebilirsiniz ve projeniz güncelliğini kaybetmekten şikayetçi olmaz .


2

Benim için proje içinde "Başlık Dosyaları" nda mevcut olmayan bir başlık dosyasının varlığıydı. Bu girişi kaldırdıktan sonra (sağ tıklayın> Projeden Çıkar) ilk kez yeniden derlendi, ardından doğrudan

========== İnşa: 0 başarılı, 0 başarısız, 5 güncel, 0 atlandı ==========

ve değişiklik yapılmadan yeniden inşa etme girişimi yapılmadı. Bence "AlwaysCreate" bayrağını tetikleyen VS2010 (belgelenmiş olup olmadığını emin olabilir) tarafından uygulanan bir çek öncesi-yapı olduğunu düşünüyorum.


2

Komut satırı MSBuild komutunu (Visual Studio IDE değil) kullanıyorsanız, örneğin AppVeyor'u hedefliyorsanız veya yalnızca komut satırını tercih ediyorsanız, bu seçeneği MSBuild komut satırınıza ekleyebilirsiniz:

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

Belgelendiği gibi burada (: zamanki MSDN ayrıntı uyarısı). Derleme tamamlandığında, will be compiledderleme sırasında oluşturulan günlük dosyasında dizeyi arayın MyLog.log.


1
/ verbosity: detaylı da aynı bilgiyi verir ama ayrıntılı değildir. Daha sonra "olarak derlenecek" için arama yapabilirsiniz.
Shane Gannon

1
Ayrıca, bu bağlantıları da bulabileceğiniz "Kaynak derleme gerekli" için arama yapmalısınız
Shane Gannon

2

Visual Studio 2013 Professional'ı Güncelleştirme 4 ile kullanıyorum, ancak diğer önerilerin hiçbiriyle çözüm bulamadım, ancak Takım projemle ilgili sorunu çözmeyi başardım.

İşte soruna neden olmak için yaptığım şey -

  • Yeni bir sınıf nesnesi oluşturuldu (Project -> Sınıf Ekle)
  • Solution Explorer ile dosyayı yeniden adlandırdım ve tüm referansları eşleşecek şekilde otomatik olarak yeniden adlandırmak isteyip istemediğim sorulduğunda evet'i tıklayın

İşte sorunu çözmek için yaptığım şey -

  • Team Explorer Home'a ​​gidin
  • Kaynak Kontrol Gezgini'ni tıklayın.
  • Tüm sınıf / proje dosyalarının bulunduğu klasöre gidin
  • Listede ORİJİNAL dosya adını buldum ve sağ tıklama ile sildi
  • İnşa etmek

Bu durumda, projede tutmak istediğiniz gerçek dosya yerine hayali dosyayı sildiğinizden emin olun.


1

Bu sorunu yaşadım ve buldum:

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

Visual C ++ projesi sürekli güncel değil ( winwlm.h macwin32.h rpcerr.h macname1.heksik)

Sorun:

Visual C ++ .Net 2003'te, hiçbir şey değişmemiş ve son derlemede hata bildirilmemesine rağmen, projelerimden biri her zaman güncelliğini kaybetti.

İlgili proje için BuildLog.htm dosyasını açmak, bu dosyalar için PRJ0041 hatalarının bir listesini gösterdi, bunların hiçbiri sistemimde hiçbir yerde görünmüyor: winwlm.h macwin32.h rpcerr.h macname1.h

Her hata şöyle görünür:

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

Projeniz hala derlenebilir, ancak bu dosya bulunana kadar güncelliğini yitirmeye devam edebilir.

Çözüm:

Dahil afxres.hyerineresource.h projenin .Rc dosya içindeki.

Projenin .rc dosyası "#include resource.h" içeriyordu. Kaynak derleyici önişlemci #ifdefbloklarına uymadığından , göz ardı etmesi gereken dosyaları içerecek ve bulmaya çalışacaktır. Windows.h bu tür blokları içerir. Bunun yerine afxres.h dahil edildiğinde PRJ0041 uyarıları düzeltildi ve "Proje güncel değil" hata iletişim kutusu ortadan kaldırıldı.


1

Benim durumumda, projelerden biri birden fazla IDL dosyası içeriyor. MIDL derleyicisi, IDL dosya adından bağımsız olarak, her biri için 'dlldata.c' adlı bir DLL veri dosyası oluşturur. Bu, Visual Studio'nun, IDL dosyalarında herhangi bir değişiklik yapılmaksızın, her derlemede IDL dosyalarını derlemesine neden oldu.

Çözüm, her IDL dosyası için benzersiz bir çıktı dosyası yapılandırmaktır (/ dlldata anahtarı atlansa bile MIDL derleyicisi her zaman böyle bir dosya oluşturur):

  • IDL dosyasını sağ tıklayın
  • Özellikleri Seç - MIDL - Çıktı
  • DllData Dosyası özelliği için benzersiz bir dosya adı girin

1

Saçımı yırtmak için uzun saatler harcadım. Derleme çıktısı tutarlı değildi; farklı projeler, bir yapıdan sonraki ardışık yapıya farklı nedenlerle "güncel değil" olacaktır. Sonunda suçlu DropBox (3.0.4) bulundu. Kaynak klasörümü ... \ DropBox'tan projelerim klasörüne birleştiriyorum (bunun nedeni olup olmadığından emin değilim), ancak DropBox bir derleme sırasında bir şekilde "dokunuyor" . Senkronizasyonu duraklattı ve her şey sürekli olarak güncel.


1

Oldukça az sayıda potansiyel neden vardır ve - belirtildiği gibi, önce MSBuild ayrıntı düzeyini 'Diagnostic' olarak ayarlayarak bunları teşhis etmeniz gerekir. Çoğu zaman belirtilen neden kendinden açıklayıcı olabilir ve hemen harekete geçebilirsiniz, ancak bazen MSBuild yanlışlıkla bazı dosyaların değiştirildiğini ve kopyalanması gerektiğini iddia eder.

Bu durumda, NTFS tünellemesini devre dışı bırakmanız veya çıkış klasörünüzü yeni bir konuma çoğaltmanız gerekir. İşte daha çok sözle.


1

Bu bana birden çok kez oldu ve sonra nedenini anlayamadan ortadan kayboldu. Benim durumumda:

Çift önyükleme kurulumunda yanlış sistem zamanı!

Anlaşılan, Ubuntu ile çift önyüklemem temel sebepti! Donanım saatimle uğraşmayı durdurmak için Ubuntu'yu düzeltmek için çok tembel oldum. Ubuntu'ya giriş yaptığımda, zaman 5 saat ileri atlıyor.

Kötü şans dışında, projeyi bir kez yanlış sistem zamanı ile inşa ettim, sonra zamanı düzelttim. Sonuç olarak, tüm derleme dosyalarının yanlış zaman damgaları vardı ve VS bunların hepsinin güncel olmadığını ve projeyi yeniden oluşturacağını düşünürdü.


1

Çoğu derleme sistemi, yeniden oluşturmaların ne zaman gerçekleşeceğini belirlemek için veri zaman damgalarını kullanır - çıktı dosyalarının tarih / zaman damgası bağımlılıkların son değiştirilme zamanına göre kontrol edilir - bağımlılıklardan herhangi biri daha taze ise, hedef yeniden oluşturulur.

Herhangi bir derleme çıktısının zaman damgasının gelecekte oluşturulacağı tahmin edilen bir dosyanın zaman damgasını aşması zor olduğundan, bağımlılıklardan herhangi biri bir şekilde geçersiz bir veri zaman damgası alırsa bu sorunlara neden olabilir: P


VS2010'un bir yeniden inşayı zorlaması veya bir projenin güncel olduğunu düşünmesinin sebebi mümkün mü?
Chris U

VS6 veya belki de VS2005'te, bir projedeki her dosyanın bağımlılıklarını ve çıktılarını gösteren sekmeleri olan bir projeye sağ tıklandığında tuhaf küçük bir özellik iletişim kutusu vardı. VS2008'de (veya VS2010'da) eşdeğer raporu nasıl alacağımı bilmiyorum
Chris Becke

1

Benim için sorun, bazı dosyaların 'Build Action' özelliği 'Resource' ve 'Output Directory'ye Kopyala' 'daha yeni ise Copy' olarak ayarlanmış olan bir WPF projesinde ortaya çıktı. Çözüm, 'Çıktı Dizine Kopyala' özelliğini 'Kopyalamayın' olarak değiştirmek gibi görünüyordu.

msbuild 'Kaynak' dosyalarını çıktıya kopyalamamayı bilir - ancak orada değilse bir derlemeyi tetikler. Belki bu bir hata olarak kabul edilebilir?

Burada neden her şeyi inşa ediyor neden fasulye dökmek için msbuild almak ima ipuçları çok yararlı!


0

Proje için Hata Ayıklama Komut bağımsız değişkenlerini değiştirirseniz, bu aynı zamanda projenin yeniden inşa edilmesi gereken mesajı tetikler. Hedefin kendisi Hata Ayıklama bağımsız değişkenlerinden etkilenmese de, proje özellikleri değişti. Yine de yeniden yaparsanız, iletinin kaybolması gerekir.


0

Visual Studio 2005 ile benzer bir sorunum vardı ve çözümüm aşağıdaki bağımlılıktaki beş projeden oluşuyordu (ilk önce inşa edildi):

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 projesinin, çözümün tamamen temiz ve yeniden yapılandırılmasından sonra bile tam bir yapı istediğini fark ettim.

Bunu pdbhem C / C ++ hem de linker çıktı dosyasının diğer çalışan projeler tarafından kullanılan konumla eşleşmesini sağlayarak düzelttim . RTTI'yı da açtım.


0

Visual Studio 2015 SP3'te başka bir tane, ancak birkaç yıl önce Visual Studio 2013'te benzer bir sorunla karşılaştım.

Benim sorunum bir şekilde önceden derlenmiş üstbilgiler için yanlış bir cpp dosyası kullanıldı (bu yüzden önceden derlenmiş üstbilgileri oluşturan iki cpp dosyaları vardı). Şimdi Visual Studio neden benim istek olmadan 'önceden derlenmiş üstbilgileri oluşturmak' için yanlış cpp bayrakları değiştirdi Hiçbir ipucu var, ama oldu ... belki bazı eklenti ya da bir şey ???

Her neyse, yanlış cpp dosyası her derlemede değiştirilen version.h dosyasını içerir. Visual Studio tüm üstbilgileri ve bu nedenle tüm projeyi yeniden oluşturur.

Şimdi normal davranışa geri döndük.


0

Her zaman tüm dosyaları derleyen ve daha önce VS2005 VS2010 (diğer kişiler tarafından) yükseltilmiş olan bir VC ++ projesi vardı. StdAfx.cpp dışındaki projedeki tüm cpp dosyalarının, önceden derlenmiş üstbilgiyi Oluştur (/ Yc) olarak ayarlandığını gördüm. Bunu sadece StdAfx.cpp önceden derlenmiş üstbilgiyi oluşturmak üzere ayarlanmış ve geri kalanı önceden derlenmiş üstbilgiyi Kullan (/ Yu) olarak ayarlanmış ve bu benim için sorunu düzeltti.


0

Visual Studio 2013'teyim ve Windows 10 Mayıs 2019 güncellemesine güncellendi ve değişikliklerden bağımsız olarak derleme her seferinde yeniden yapılması gerekiyordu. Pch'i TargetName yerine ProjectName olarak yeniden adlandırmayı denedim, ayrıntılı günlük ve Python komut dosyası içeren eksik dosyaları aradı, ancak sonunda zamanımın MS sunucularıyla senkronize edilmedi (milisaniye gibi).

Bunu benim için çözen şey

  • Kontrol panelindeki "Tarih ve saati ayarla"
  • "Şimdi Senkronize Et"

Şimdi projelerimin sebepsiz yere yeniden derlenmesine gerek yok.


0

Sanırım bir satırsonu veya başka bir boşluk yerleştirdiniz. Çıkarın ve tekrar F5 tuşuna basın.


-3

.NET projeleri ne olursa olsun her zaman yeniden derlenir. Bunun bir kısmı IDE'yi güncel tutmaktır (IntelliSense gibi). Bu soruyu yıllar önce bir Microsoft forumunda sorduğumu hatırlıyorum ve bu bana verilen cevaptı.


1
VS2008'de proje her zaman yeniden inşa edilmedi. Bu çok sinir bozucu çünkü dll çok düşük katmanlı ve hemen hemen tüm dlls yeniden oluşturmak için zorlar. Göç konusunda bir şeyler ters gitti ve ne olduğunu anlayamıyorum.
Chris U

2
2008, 2010, 2012 ve 2013 her zaman yeniden inşa edilen .NET projeleri
yapmıyor

Zekayı işlevsel tutmak için arka plan derlemesi devam ediyor (ve bu cevabın 10 yaşında olduğunu unutmayın). I
Preet Sangha
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.