kaynak dosya, modülün oluşturulduğu zamandan farklı


103

Bu beni deli ediyor.

Değiştirmeye çalıştığım oldukça büyük bir projem var. Daha önce yazdığım zaman DbCommand, görsel stüdyonun üzerinde herhangi bir sözdizimi vurgulama yapmadığını ve kullandığımı fark ettim System.Data.Common.

Hiçbir şey vurgulanmamış olmasına rağmen, proje tarayıcımda düzgün çalışıyor gibiydi. Bu yüzden, işlerin gerçekten olması gerektiği gibi çalışıp çalışmadığını görmek için hata ayıklayıcıyı çalıştırmaya karar verdim.

Vurgulamayı yapmayan sınıfa her çağrıldığında "the source file is different from when the module was built"mesajı alıyorum.

Çözümü temizledim ve birkaç kez yeniden oluşturdum, tmp dosyalarını sildim, buradaki tüm talimatları uyguladım "Kaynak dosya modülün oluşturulduğu zamandan farklı." , web sunucusunu yeniden başlattı ve yine de kaynak dosyaların açıkça olmadığında farklı olduğunu söylüyor.

Bu nedenle bugün yazdığım kodların hiçbirini test edemiyorum.

  • Ben ona uyduğumda, kaynak ikiliden nasıl farklı olabilir?
  • Görsel stüdyoya biraz anlam vermenin bir yolu var mı, yoksa sadece bir şeyi mi kaçırıyorum?

Bu biraz fazlaysa özür dilerim. Kısa versiyon: Programımı derliyorum, sonra hata ayıklamaya çalışıyorum ve visual studio bana kaynak dosyamın (az önce derlediğim) yeni oluşturduğum modülden farklı olduğunu söylüyor. Sadece neden böyle düşündüğünü bilmek istiyorum
frustratedcoder

Yanıtlar:


111

Bu sorunu, farklı olan kaynağın giriş noktasına (statik boşluk Ana) sahip olan kaynak olduğu bir konsol uygulamasını çalıştırırken buldum. Bin ve nesne dizinlerini silmek ve tam bir yeniden oluşturma yapmak bunu düzeltir gibi görünüyordu, ancak her kod değişikliği yaptığımda, yine güncelliğini yitiriyordu.

Bunun için bulmamın nedeni şuydu:

  1. "Yalnızca Çalıştır üzerinde başlangıç ​​projeleri ve bağımlılıkları oluştur" u kontrol ettim (Araçlar -> Seçenekler -> Projeler ve Çözümler -> Oluştur ve Çalıştır)
  2. Configuration Manager'da, başlangıç ​​projemde "Build" seçeneği işaretli değildi

(# 2 için -> 'Hata Ayıkla / Serbest Bırak' açılır listesinin altındaki araç çubuğundan erişilebilir.)


7
Yapılandırma yöneticisi ipucu için +1. Bunu bir saattir halletmeye çalışıyorum ve hepsi bu.
Nick Sarabyn

TFS'de bir çözümün birden çok dalı vardı. Tüm teslim alınan dallarda çöp kutusu ve nesne dizinlerini silmek işleri temizliyor gibiydi.
sparebytes

benim durumumda, ben değiştirildi solution platformsdan Any CPUhiç Mixed Platformyanlışlıkla !!! Tekrar olarak değiştirdim Any CPUve tekrar çalışıyor.
vaheeds

Teşekkürler, Çözüm> Özellikler> Yapılandırma Özellikleri> Yapılandırma, konsol uygulamam (aynı sln'de bir web uygulaması için testler çalıştıran) işaretli değil.
emery.noel

23

Ben de aynı sorunu yaşıyordum, projelerimin hepsi aynı çözümdeydi, bu yüzden Projeden Projeye referansları kullanıyorlardı, bu nedenle biri değiştikçe diğerlerinin de güncellenmesi gerekiyordu. Ancak durum böyle değildi, VS2010'u oluşturmaya, yeniden oluşturmaya, kapatmaya çalıştım, kaynak kontrolümüzden yeni bir kopya çıkardım. Bunların hiçbiri işe yaramadı, sonunda denediğim şey projeye sağ tıklamak ve her projeyi ayrı ayrı yeniden inşa etmekti. Bu, .dlls ve .pdb dosyalarını güncelledi, böylece hata ayıklayabilirim.

Buradaki sorun, dll'nizin veya pdb dosyalarınızın senkronize olmamasıdır.


1
Doğrudan bahsetmediniz, ancak "projeyi kaldır" (yeniden yükle) benim için çalışıyor, teşekkürler.
javaLover

bu benim için çalıştı:> Bunların hiçbiri işe yaramadı, sonunda denediğim şey projeye sağ tıklamak ve her projeyi ayrı ayrı yeniden inşa etmekti. Bu, .dlls ve .pdb dosyalarını güncelledi, böylece hata ayıklayabilirim.
Khachatur

projeyi kaldır (tekrar yükle) ve en son bitleri web sunucusuna yayınla (IIS) benim için çalışıyor.
Jason Tang

5

Bu adımları takip et

  1. Bin dizinini DLL'nin oluşturulduğu projeden silin.
  2. Projeyi yeniden inşa edin.
  3. DLL'ye başvuran projeden başvuruyu kaldırın.
  4. Referansı tekrar ekleyin.
  5. Zevk almak.

4

Bu cevaplara ek olarak, yanlış yol nedeniyle yeni DLL'leri eski olanlarla değiştirirken aynı sorunu yaşadım. Hala bu hatayı alıyorsanız, DLL'ler için yanlış yola başvurmayabilirsiniz. IIS yöneticisine gidin ve DLL'lerinizi kullanan web sitesini tıklayın. Sağ pencerede Gelişmiş Ayarlar'a tıklayın ve Dosya Gezgini'ndeki Fiziksel Yol klasörünün yoluna gidin ve DLL'lerinizi değiştirmek için bu klasörü kullandığınızdan emin olun.


4

Kontrol etmeniz gereken bazı şeyler:

Proje referanslarınızı iki kez kontrol ettiniz mi?

Hala çalışan bir Visual Studio başlatılmış web sunucunuz var mı? Sistem tepsisini kontrol edin ve dişli simgeli bir sayfa arayın (birden fazla sayfanız olabilir):

alternatif metin
(kaynak: msdn.com )

Sağ tıklayın ve kapatın / çıkın. Birden fazlasına sahip olabilirsiniz. Şimdi değişikliklerinizde hata ayıklayabilir misiniz?

Hata ayıklama sürümünü mü çalıştırıyorsunuz, ancak yalnızca yayın sürümünü mü oluşturdunuz (veya tam tersi)?

Derleme gerçekten başarılı oldu mu? "Hatalar oldu, yine de devam etmek istiyor musunuz?" farkında olmadan birkaç kez mesaj gönderin.


Derlemeler başarılı. Visual Studio söz konusu olduğunda biraz acemiyim. Hata ayıklama sürümünü veya sürümü çalıştırıp çalıştırmadığımı nasıl kontrol ederim?
frustratedcoder

1
@frustrated - Sadece bariz olanı ortadan kaldırmaya çalışıyordum. Sürümde veya hata ayıklamada olup olmadığınızı kontrol etmek için, araç çubuğundaki "hata ayıklama" simgesinin yanındaki açılır menüyü kontrol edin. "Hata Ayıklama" veya "Yayın" olacaktır.
ChrisF

Teşekkür ederim. Hata ayıklama diyor. Olması gereken bu mu?
frustratedcoder

@frustrated - Bu iyi bir başlangıç;). Yayın kodunda "hata ayıklama" yapabilirsiniz, ancak bu o kadar kullanışlı değildir - ancak bu burada geçerli değildir. Bu, hata ayıklama ikili dosyalarını oluşturduğunuz (veya en azından yapmanız gerektiği) anlamına gelir. Biraz daha düşünmek zorundayım - sorunu gerçekten görmeden teşhis etmek biraz zor.
ChrisF

"sorunu gerçekten görmeden teşhis etmek biraz zor" diye düşündüm. Yine de yardım için minnettarım
frustratedcoder

3

Web hizmetlerinde, sorun Visual Studio "Tarayıcıda Görüntüle" komutunun kullanılmasıyla ortaya çıkabilir. Bu, hizmetin DLL ve PDB dosyalarını bin ve obj klasörlerine yerleştirir. Bir istemciden web hizmetine adım atarken, Visual Studio bir şekilde bin (veya obj) klasöründeki PDB'yi kullanır, ancak projenin çıktı derleme klasöründeki DLL'yi kullanır. Birkaç geçici çözüm var:

  1. Web hizmet bölmesindeki ve obj dosyalarındaki DLL ve PDB dosyalarını silmeyi deneyin.
  2. Visual Studio'da "Tarayıcıda Görüntüle" yi tıklamayı deneyin.

Daha önce kaynak dosya uyuşmazlığı hatasını aldıysanız, Visual Studio dosya adını kara listeye eklemiş olabilir. Çözüm özelliklerinizi kontrol edin. İletişim kutusunun sol tarafında "Ortak Özellikler -> Kaynak Dosyalarında Hata Ayıkla" seçeneğini seçin. Web hizmeti kaynak dosyalarınız "Bu kaynak dosyaları arama" alanında görünüyorsa, onları silin.


2

Bu sorunu yeni yaşadım.

Yukarıdakilerin hepsini denedim, ancak yalnızca bu işe yaradı:

  • çözüm için .pdb dosyasını silin.
  • rahatsız edici .obj dosyalarını silin (senkronize olmadığı bildirilen dosya için)

çözümü inşa et.

Bu, benim için ilerleyen tüm yapılar için sorunu çözdü.


Burada .pdb dosyalarını silmenin anahtar olduğunu düşünüyorum. Bu, başka bir şubeden eski .pdb dosyalarını kopyaladığım için başıma geldi.
Danzomida

1

Visual Studio 2010'daki sorunu şu şekilde düzelttim:

1) "Çözüm Yapılandırmaları" seçeneğini "Hata Ayıkla" dan "Sürüm" e değiştirin

2) Hata ayıklamaya başlayın

3) Hata ayıklamayı durdurun ve "Çözüm Yapılandırmaları" seçeneğini tekrar "Hata Ayıkla" olarak değiştirin

Bu benim için çalıştı. 3. Adım isteğe bağlıdır - "Yayınla" olarak değiştirdiğimde sorunsuz çalışıyordu, ancak eski haline getirmek istedim.


1

Çözümüm:

Farklı bir çözümden var olan bir projeyi yeni bir çözüm dosyasına dahil etmiştim.

Mevcut proje yeniden inşa edildiğinde, nihai çıktıyı YENİ çözümün çıktı dizinine koyduğunu fark etmedim. ESKİ çözümün çıktı dizinine bakmak için bir bağlayıcı yol tanımladım.

Projemi yeni çözümün çıktı dizininde arama yapacak şekilde değiştirmek bu sorunu benim için çözdü.


1

Bu sorunu yaşadım ve konsol uygulamamı bir Windows uygulaması olarak çalıştırdığım ortaya çıktı. Çıkış türünün konsola geri döndürülmesi sorunu çözdü.


1

Ben de aynı sorunu yaşadım. Düzeltmek için VS2013'te hata ayıklamak için "Yayın Modu" nu kullandım. Bu benim için yeterli, çünkü bir js \ c ++ addon düğümünde çalışıyorum.


1

Hataya neden olan dosyanın bulunduğu projeyi kaldırın.

Projeyi yeniden yükleyin.

Sabit


1

Visual Studio 2017'de gizli .vs klasörünü silme bu sorunu benim için çözdü.


1

Benim sorunum, çözümümde iki projem olmasıydı. İkincisi, ilkini çağırmak için kullanılan bir test projesiydi. Bin klasörünün yayın klasöründen referansların yolunu seçmiştim.

Bu nedenle, ilk projenin kodunda bir değişiklik yaptığımda ve onu yeniden oluşturduğumda, hata ayıklama klasöründeki dll'leri güncelliyordu, ancak çağıran proje sürüm klasörüne işaret ediyordu ve bana hata veriyordu, "kaynak dosya modülün olduğu zamankinden farklı inşaa edilmiş."

Sürüm klasöründeki ana projenin dll'sine referansı silip hata ayıklama klasöründeki dll'ye ayarladığımda sorun ortadan kalktı.


1

Benim durumumda, @ Eliott'un cevabı işe yaramıyor. Bu sorunu çözmek için eksik dosyamı Hariç Tut / Projeden Dahil Et ve ayrıca Temizle ve ayrıca çözümü ve Yeniden Oluştur'u .

Bu işlemlerden sonra, son değişikliklerimi içeren dosyam ve hata ayıklayıcı geri yüklenir.

Umarım bu yardımcı olur.


0

çözüm: - sorun şudur: - bir çözümdeki bazı projeleriniz, başka projelere başvurursa, bazen bazı projelerin dll'si otomatik olarak güncellenmez, çözümü ne zaman geliştirirseniz, bazı projeler önceki derleme dll'lerine sahip olur, değil son dll'ler

manuel olarak gitmeli ve en son yapı projesinin dll'sini referans alınan projeye kopyalamalısınız


0

Visual Studio 2013 kullanıyordum ve kaynak kontrolü altında mevcut bir projem vardı.
Kaynak kontrolünden yeni bir dizine yeni bir kopya indirmiştim.
Yeni kopyada değişiklikler yaptıktan sonra, söz konusu hatayı oluştururken aldım.

Çözümüm:
1) Açın Documents\IISExpress\config\applicationhost.config
2) virtualDirectoryYeni kopyaya dizin ile düğüm güncelleyin ve kaydedin.


0

Benim sorunum, projede bir web hizmetim olması ve derleme yolunu değiştirmemdi.

Varsayılan yapı yolunu geri yüklemek sorunumu çözdü.


0

Ben de aynı sorunu yaşadım ve burada yayınlanan diğer cevaplardaki rehberliğin çoğunu takip ettim, hiçbir şey benim için işe yaramadı.

Sonunda IIS'yi açtım ve web uygulamam için uygulama havuzunu geri dönüştürdüm. IIS 8.5.9600 sürümüne sahibim, web uygulamama sağ tıkladıktan sonra Dağıt> Geri Dönüştür> Uygulama havuzunu geri dönüştür> Tamam.

Bu sorunu çözmüş görünüyor, artık kesme noktaları beklendiği gibi vuruluyor. Bunu bin ve obj klasörlerini silmekle birlikte yapmanın durumuma yardımcı olduğunu düşünüyorum.

İyi şanslar!


0

Bunun eski bir soru olduğunu biliyorum ama ben de aynı sorunu yaşadım ve başka birine yardımcı olur diye buraya göndermek istedim. Yeni bir bilgisayar aldım ve BT departmanı eski bilgisayarımı yenisiyle birleştirdi. TFS'yi kurduğumda, daha önce kullandığımdan farklı bir yerel yolu ek bir dahili sürücüye eşledim. Eski yol, sabit sürücümdeki birleştirilmiş verilerden hala mevcuttu, böylece hala oluşturabilir ve çalıştırabilirdim. IIS yollarım da eski dizine işaret ediyordu. IIS'yi doğru yola güncelledikten sonra, hata ayıklama işlemini gayet iyi yapabildim. İyi bir önlem için eski dizini de sildim.


0

Ben de bunu yaşadım. Sadece projedeki obj klasörünü açıyorum ve ardından hata ayıklama klasörünü açıyorum .pdb dosyasını siliyorum ve hepsi bu.


0

Bu hata, projenin parçası olmayan bir kaynak dosyada değişiklik yapmaya çalıştığınızda da ortaya çıkar.

Projelerimden birinin .dll'sinden bir yöntemde hata ayıklama yapıyordum, burada Visual Studio kaynağı oldukça yararlı bir şekilde yükledi çünkü .dll aynı makinede oluşturulmuştu ve kaynağa giden yolu biliyordu. Açıktır ki, böyle bir dosyayı değiştirmek, başvurulan projeyi yeniden oluşturmadıkça hiçbir şey yapmayacaktır.


0
  1. Tüm kesme noktalarını silin.
  2. Yeniden oluştur.
  3. Bitti

0

Visual Studio 2015'te, C ++ kullanarak benim için the source file is different from when the module was builtçözülen sorun şu oldu:

  • Visual Studio'yu yeniden başlatın.

0

Hata ayıklama-> hata ayıklamadan başlayın.

Bu seçenek benim için çalıştı. Bu yardımcı olur umarım!


0

Matlab'da mex () kullanarak işaret ettiğiniz konumun doğru olup olmadığını kontrol edin (kütüphaneyi Visual Studio'da derlediğiniz son tarihe değiştirilmiş lib ve obj dosyalarını içerir).

Durum bu değilse:

Visual stüdyosunu .lib dosyalarını kaydeden bir modda derlediğinizden emin olun:

  1. özellikler -> Yapılandırma özellikleri -> Genel -> Yapılandırma türü -> statik kitaplık

  2. özellikler -> Yapılandırma özellikleri -> Genel -> Hedef uzantı = .lib (exe yerine)

Çıktı ve ara dizinlerin Matlab diziniyle eşleştiğinden emin olun.

  1. özellikler -> Yapılandırma özellikleri -> Genel -> Çıktı dizini
  2. özellikler -> Yapılandırma özellikleri -> Genel -> Ara dizin

0

Bu sorunu bazen / Visual Studio ile hata ayıklarken, ancak uygulama IIS tarafından sunulduğunda alıyorum . (Orijinal geliştiricinin bu projeyi nasıl kurduğuyla ilgili bazı karmaşık nedenlerden dolayı bu formda geliştirmemiz gerekiyor.)

Ben ne zaman dosyayı değiştirip yeniden , o düzeltmeleri onu çok zaman. Kulağa aptalca geldiğini biliyorum, ancak bir süredir değiştirmediğim halde neden tuhaf bir şey yaptığını görmek için bazı kodlarda hata ayıklamaya çalışıyordum ve bu sayfadan bir düzine şey denedim, ancak değiştirerek düzeltildi dosya..

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.