Hata CS1705: "başvurulan derlemeden daha yüksek bir sürüme sahip"


110

Bunu bir süredir araştırıyorum ve çözülemedim. Aşağıdaki hata mesajını alıyorum:

Compiler Error Message: CS1705: Assembly 'My.Model, Version=1.1.4422.23773, Culture=neutral, 
PublicKeyToken=bfde95ba233094b2' uses 
'Common, Version=3.3.4273.24368, Culture=neutral, PublicKeyToken=bfde95ba233094b2' 
which has a higher version than referenced assembly
'Common, Version=3.3.4269.17112, Culture=neutral, PublicKeyToken=bfde95ba233094b2'

c:\WINDOWS\assembly\GAC_MSIL\Common\3.3.4269.17112__bfde95ba233094b2\Common.dll: 
(Location of symbol related to previous error)

Web sunucusu Server 2003 çalıştırıyor. C: \ windows \ assembly'ye gittim ve aslında Common.dll'nin 3 sürümünün listelendiğini fark ettim. Listelenen en yüksek sürüm 3.3.4269.17112 idi

3.3.4273.24368 sürümüne sahip dll'yi derleme dizinine kopyaladım. Daha sonra kodumu yeniden derledim ve yeniden konuşlandırdım (muhtemelen abartılı ama çok iyi). Tarayıcımı yeni bir oturumda açıp tekrar site URL'sine gittiğimde hala aynı mesajı alıyorum.

Windows explorer'ı kullanabilir ve daha yüksek sürümlere sahip Common.dll'nin de artık listelendiğini doğrulayabilirim.

Bu sorunu çözmek için daha ne yapabilirim? Montajımdaki referansı eski sürüme işaret edecek şekilde değiştirmek istemiyorum.


2
Çılgın *.*sürüm numaraları. Emin olmanın tek yolu, her şeyi yeniden inşa et.
Hans Passant

Yanıtlar:



68

Bu hatayı aldım çünkü "Yeniden Oluştur" gerçekten yeniden oluşturulmuyordu.

Çözüm: Visual Studio'yu kapatın, gerçekten gidin ve bin klasörünü silin, ardından yeniden oluşturun, daha iyi çalışabilir.

Ayrıca, bazen Visual Studio yalanlar başvurular hakkında, bu nedenle kontrol HintPathiçin de .csprojdosyalar.


2
Bu benim pastırmamı kurtardı. Yerel olarak çalışmak iyiydi, ancak bir değişiklik yayınladım ve işler tuhaf gitti. Çevrimiçi çöp kutusu klasörünün içeriğini silmek, işleri yeniden senkronize olmaya zorladı. Teşekkürler!
pStan

41

NuGet kullanıyorsanız , sorunlara neden olan ve güncellemeye basan paketi bulmak için 'Çözüm İçin NuGet Paketlerini Yönet'e gitmeye değer . Daha sonra tüm paketleri en son sürüme getirmeli ve sorunu çözmelidir.

Hızlı ve kolay olduğu için denemeye değer.


2
Bu benim için çözdü, teşekkürler. Yine de durumum biraz farklıydı: Güncellemelerde listelenmiyordu, bu yüzden kuruluma gitmem gerekiyordu ve proje başına paket sürümünü gösteren bir pencere vardı. Bazı eski modülleri yeni bir cms sürümüne yükseltiyordum, bu yüzden sorunlu paketlere gitmem, onları seçip kur'a tıklamam gerekti. Cm'ler nuget'i kullanmak için değiştiği için olabilirdi, ancak beni çok sıkıcı csprojdüzenleme işinden kurtardınız !
rtpHarry

3
NuGet paketlerini proje düzeyi yerine çözüm düzeyinde güncellediğinizden emin olun.
Jess

2
Bu kesinlikle kesinlikle kabul edilen cevap olmalı, bunu okumadım ama istemeden çözümümde denedim, bu bir cazibe gibi çalıştı.
baymax

30

Benim sorunum, aynı dll'nin farklı sürümleri olan 2 farklı kopyasını referans alan 2 projem olmasıydı. İkisini de kaldırarak ve aynı dll dosyasına başvurduklarından emin olarak sorunu düzelttim.


13

Olası nedenlerden biri, ikinci montajın GAC'ye kurulurken, daha yüksek sürüm numarasına sahip ilk montajın projenin Referanslarına eklenmiş olmasıdır. Bunu doğrulamak için, proje referanslarında montaja çift tıklayın ve Nesne Tarayıcısında aynı ada sahip başka bir montaj olup olmadığını kontrol edin.

Bu durumda, ikinci derlemeyi GAC'den kaldırmak için gacutil.exe yardımcı programını kullanın. Örneğin, 64 bitlik derlemeler ise:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\gacutil.exe -u <assembly_name>

İki yıl sonra ve öneriniz büyüleyici oldu. Referansları Nesne Tarayıcısında görüntülemek onu sıraladı.
ceebreenk

3

Referans'a gidin ve soruna neden olan dll dosyanıza yeni bir referans ekleyin ve tüm dll'lerinizin aynı sürüme göre derlendiğinden emin olun. Benim için çalışıyor umarım sizin için de işe yarar.


2

Ekibim az önce inşa ortamımızda bu sorunla karşılaştı. Sorun, .csproj dosyasının <HintPath> öğesindeki bir farklılıktan kaynaklanıyordu.

Ortak derlememiz, referans derlemelerimizi içeren dizine doğru göreceli bir yola sahipti. Bağımlı derlemenin eski bir dizin yapısından bir yolu vardı. GAC, bağımlı kişinin referansını C: \ Program Files'da kurulu olan doğru sürüme çözdüğü için çözüm geliştirici makinelerde başarıyla derlendi. Derleme ortamı, geri düştüğü eski bir derleme kurulumuna sahipti (hiçbiri olmamasına rağmen) ve dolayısıyla hata. Bir metin düzenleyicide <HintPath> öğesini güncellemek sorunu düzeltti.


2

NuGet paketleri çözüm içindeki birden çok projede farklılık gösteriyorsa sorun görülür.

ÇÖZÜM'deki tüm PROJELER ile nuget paketlerini ortak bir sürüme güncelleyerek bunu düzeltebilirsiniz.


1

Benzer bir sorun vardı. Benim sorunum, aynı çözüm içinde, her biri bir DLL'nin belirli bir sürümüne ancak farklı sürümlere başvuran birkaç projem olmasıydı. Çözüm, tüm referansların tüm özelliklerinde 'Belirli Sürüm'ü yanlış olarak ayarlamaktı.


1

Yukarıdaki adımlardan bazılarını denedikten sonra bunun uzun bir süre önce sorulduğunu biliyorum. Bana yardımcı olan, aşağıdaki adımlar ve bu makale oldu .

Referansı buldum ve PublicKeyToken'ı eskisine referans olandan değiştirdim.

Umarım bu da yardımcı olur.


1

Ben de aynı hatayı aldım. Microsoft.AspNetCore.ALLTest projesine yükledikten sonra hatayı düzelttim .


0

El yapımı dll koleksiyonu klasörü
Eğer çözüm farklı kütüphaneler gelen dll dosyaları için bir çöp klasörü varsa
lib, source, libsvb
Visual Studio size (bir köknar süre) çözümünüzü açacağım eğer bu sorun alabilirsiniz. Ve dll'nizin toplama klasörü bir şekilde gözden kaçmış veya somut bir dll dosyası kaçırılmış.

Visual Studio sessizce dll'nin başvurusunu kendi başına bir şeyle değiştirmeyi deneyecektir. VS başarılı olursa, yerel çözümünüz için yeni bir referans kalıcı olacaktır. Diğer klonlar / kontroller için değil.

Yani <HintPath>göz ardı edilecek ve proje dosyası (.csproj) değiştirilmeyecek.
Bir örnek olarak

<Reference Include="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\lib\DocumentFormat.OpenXml.dll</HintPath>
</Reference>

DocumentFormat.OpenXmlBaşvurulan edilecektir C:\Program Files (x86)\Open XML SDK\V2.5\libbir değil solution\..\libklasörde.

hızlı Çözüm

  • dll'nin toplama klasörünü kontrol edin ve geri yükleyin
  • Solution Explorer'dan Unload Project yapın , ardından Reload Project yapın .

Doğru Çözüm , NuGet paket yöneticisine geçiş yapmaktır.


0

SharePoint için, kök klasörünüzün altında DLL dosyalarınızın bulunduğu bir "bin" klasörünüzün olmadığından emin olun, öyleyse silin. (ve VS'de "Yerel Kopyala" yı yanlış olarak değiştirin).


0

Bir web sitesi projesindeki referanslar, web.config dosyasında saklanır. Hatayı düzeltmek için buradaki referansı güncelleyin.

Web.config dosyasındaki referansları unuttuğumu fark etmeden önce çözümümdeki tüm referansları incelemek için biraz zaman harcadım.


0

UnitTestingProject ile aynı sorunu yaşadım, MainProject'te "System.Web.Mvc, Version = 3.0.0.0" ve UnitTestingProject'te "System.Web.Mvc, Version = 3.0.0.1" kullanıyordum

Aşağıdakileri şurada değiştirin: <Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.AspNet.Mvc.3.0.50813.1\lib\net40\System.Web.Mvc.dll</HintPath> </Reference>


0

Bunu, Episerver Find'ı sitemize ekledikten ve Episerver Find için ilgili NuGet paketini yükledikten sonra aldım.

Düzeltme kolaydı: Episerver ile ilgili tüm eklentileri de güncelleyin (ilgisiz görünseler bile: CMS, CMS.TinyMCE, CMS.UI, vb.)

Olası tüm Episerver eklentilerini güncelledikten ve yeniden derledikten sonra hata ortadan kalktı.


0

Senaryomda dotnetCore uygulamam için .csproj dosyasını düzenledim. Ben fark TargetFramework etiketi 'değeri olan netcoreapp2.1 ve RuntimeFrameworkVersion etiketi değeri 2.0.0 . Değişti Ben So RuntimeFrameworkVersion için 2.1.0 , VS ve yeniden inşa yeniden kaydedilir ve daha sonra hataları giderilmiş.

Umarım bu size yardımcı olur ...

İyi şanslar,

Sügeshan


-1

Projenizde System.Web.Mvc referanslarını bulun sürümü kontrol edin.

O sağ tıklama sonra referanslar -> meclisleri ve ve System.Web.Mvc arama setup onu.

Sorun, bu derlemelerin farklı sürümlerine neden olur .

Düzenle: NuGet paketlerini yönet'i seçin ve güncellemeleri yükleyin (birden çok projeniz varsa bunlara da güncellemeler yükleyin.)

Önemli güncelleme Microsoft.AspNet.Mvc'dir ve Microsoft.Net.Compilers bunu unutmayın!


-1

Ekibimizde git ile farklı bilgisayarlar üzerinde çalışıyorduk. Biri bir güncelledi dllve bende olmadı. Bağımlılık referanslarımı yeni güncelledim ve sorun çözüldü.


-3

Benzer bir sorun yaşadım, diğer DLL'ye, yani B.dll'ye başvuran bir DLL yani A.dll oluşturmuştum.

Bir C.exe uygulaması oluşturdum ve A.dll ve B.dll DLL dosyalarına başvurdum.

Çözüm - B.dll'nin referansını c.exe'den kaldırırken sorunu çözebildim.

Bu yardımcı olur umarım.

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.