2015-09-30 14 views
14

Sadece ASP.NET MVC/WebApi projemi Microsoft.Practices.Unity 3.5.1404'den 3.5.1406'ya yükseltdim (yalnızca yeni yayımlanan nuget aracılığıyla). Tabii ki'IUnityContainer' türü, başvurulan bir derlemede tanımlı değil

GlobalConfiguration.Configuration.DependencyResolver = 
    new Unity.WebApi.UnityDependencyResolver(container); 

Ben 3.0.0.0, ama 3.5.1.0 başvuran değilim: hatlarda

Error CS0012 The type 'IUnityContainer' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Practices.Unity, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

gibi: Daha sonra bu derleme hatası alıyorum. Bu yüzden benim varsayımım, Unity.WebApi derlemesinin, Microsoft.Practices.Unity aksamının önceki bir sürümüne karşı derlenmiş olmasıdır. Teorik olarak, bu kadar gibi bir montaj yönlendirmeyle birlikte düzeltmek isterdim: çalışmak görünmüyor Ancak

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.5.1.0" newVersion="3.5.1.0" /> 
    </dependentAssembly> 

.

Herhangi bir öneriniz var mı?

cevap

8

Şimdi, bu büyük bir olasılıkla gereksizdir, ancak sorunun görünüşe göre Unity 3.5.1406 ile bir ilgisi vardı, çünkü aşağıya çekildi ve Unity 4.0 ile değiştirildi. Ayrıca, birkaç yıl içinde güncellenmemiş olan eski, görünüşte desteklenmeyen Unity.WebApi kütüphanesinin yerini aldım ve daha yeni, görünüşte desteklenen Unity.AspNet.WebApi kitaplığı ile değiştirdim. "Unity WebApi" araması, listenin en üstündeki eski kitaplığı döndürdüğünden ve yeni kitaplığı ilk sayfanın altından gizlediğinden, NuGet'te bu biraz zor.

Tüm bunların arasında, fark ettiğim herhangi bir sorun olmadan şimdi çalışıyor.

+1

ve 'Unity.Mvc '. Rob cevapta tam adımlar http://stackoverflow.com/a/35043239/1011959 –

5

Sadece Unity değil, Unity.AspNet.WebApi 3.5.1406 sürümüne de yükselttiğinizden emin olmalısınız. Eğer bunu yaparsan, hata gitmeli.

+0

Haklısınız, bunu çözmüş olmalı. Ama öyle görünmüyor. Daha yeni Unity.AspNet.WebApi projesi yerine eski (kullanımdan kaldırılmış) Unity.WebApi projesini kullanıyordum. Fakat doğru projeye güncelledikten sonra bile hala hata alıyorum. Ya da benzer bir: şimdi 3.5.0.0 sürümüne ihtiyaç duyduğundan şikayet ediyor. Ayrıca, Microsoft.Practices.Unity.Mvc derlemesindeki sınıflara başvuran satırlarda da aynı hatayı alıyorum. –

+1

Unity.WebApi, Unity IOC entegrasyonu ile MVC projelerine izin veren açık kaynaklı bir projedir. Ancak, 2013'ten beri güncellenmiş gibi görünmüyor, bu yüzden muhtemelen bunu kullanmaktan uzak duracağım. Projelerim için Unity.AspNet.WebApi ile birlikte Microsoft Unity/Unity.MVC kullanıyorum. Bunları kurmak için herhangi bir sorunum yok gibi görünüyor. –

+0

Paket yönetici/bağımlılık siparişi yükleme sorunu olabilir mi? Bir test uygulamasında temiz bir kurulum yapmayı deneyebilir misiniz? –

3

Bu sabah aynı sorunu yaşadım, Unity.WebAPI ile birlikte Unity v4.0'ı kaldırma işlemini tamamladı. Birlik kurulu v3.5.1405-prelease ve daha sonra Unity.WebAPI yeniden kuruldu.

+0

Woah. Unity 3.5.1406, Nuget'ten kaldırılmış gibi görünüyor. İlginç. Ben sadece 3.5.1405-prelease ve 4.0'ı görüyorum. İlginç. Tekrar çeşitli 4.x lezzetleriyle tekrar deneyeceğim (çeşitli ilişkili paketler şimdi bu sürüme güncellendi) ve ne olduğunu görün. –

+0

Burada bir web projesi ile aynı, ben de güncellemeyi geri alma sona erdi, MS uyanana kadar bekleyeceğim. Unity.Mvc4 yerine –

5

Küresel bir update-package çalıştırırken bunu vurdum.

Birlik sürümünü install-package Unity -version 3.5.1404 aracılığıyla geri aldığınızda çözüldü.

+1

Çok fazla mücadele ettikten sonra, kullanıcı düzeltmesi yaptıktan sonra kullanıcı326608 – Ajay

1

Hata 1 'Microsoft.Practices.Unity.IUnityContainer', başvurulan bir derlemede tanımlanmıştır. 'Microsoft.Practices.Unity, Sürüm = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' derlemesi için bir başvuru eklemeniz gerekir.

YANIT Okunur Bu hatanın sadece AÇIK-> Paket Yöneticisi Konsolu ve tip

PM> update-paket için

12

Bu belki 4.0'a Unity 3.5.1 yükseltme nasıl bir daha güncel bir cevap olabilir 0,1.

'IUnityContainer' tipi, başvurulan bir derlemede tanımlanmıştır. 'Microsoft.Practices.Unity, Sürüm = 3.5.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' derlemesi için bir başvuru eklemeniz gerekir.

Ya Paket Yöneticisi Konsolu veya Nuget yoluyla:

  • Kaldırma Unity.Mvc4
  • kaldırın Unity.WebAPI
  • Güncelleme-Paketi Birlik
  • yükleyin-Paketi Unity.Mvc (not: paket adı bu kez hiçbir numara)
  • yükleyin-Package

Kod Unity.AspNet.WebApi:

Bootstrapper.cs gelen App_Start/UnityConfig.cs için
  • Kopyalanan container.RegisterTypes
  • projesi
  • den Bootstrapper.cs dışla
  • Yapı ve
+0

Bu bana yardımcı oldu. Teşekkürler. –

3

montaj için bir sebep Run Microsoft.Practices.Unity PublicKeyToken bir değişiklik olabilir çalışmıyor redirect. Unity.3.5.1404.0 ve Unity.4.0.0 arasında PublicKeyToken arasında 31bf3856ad364e35 6d32ff45e0ccc69f olarak okundum. Belki de 3.5.1406 için zaten değişmişti? Bakınız: https://github.com/unitycontainer/unity/issues/15

2

Nisan 2013'te Unity 3 olan Unity Container'un en son sürümünü takip ettim ve referanslarıma ekledim. İşte çektiğim tüm adımları detaylandıran bir PDF on my Google Drive bağlantısı var.

+0

Yığın Taşmasına Hoş Geldiniz! Hedef siteye ulaşılamaması veya sürekli olarak çevrimdışı olması durumunda, lütfen her zaman önemli bir bağlantının en alakalı bölümünü belirtin. Teşekkürler! – dferenc