Le type 'IUnityContainer' est défini dans un assembly qui n'est pas référencé
Je viens de mettre mon ASP.NET MVC/WebApi de projet de Microsoft.Les pratiques.L'unité 3.5.1404 à 3.5.1406 (via nuget, vient de sortir). Par la suite, j'obtiens cette erreur de compilation:
Erreur CS0012 type "IUnityContainer" est défini dans une assemblée qui n'est pas référencé. Vous devez ajouter une référence à l'assembly " Microsoft.Les pratiques.L'unité, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
Sur des lignes comme:
GlobalConfiguration.Configuration.DependencyResolver =
new Unity.WebApi.UnityDependencyResolver(container);
Bien sûr, je ne suis pas le référencement 3.0.0.0, mais 3.5.1.0. Donc mon hypothèse est que la Unity.WebApi
assemblée a été compilé avec une version antérieure de la Microsoft.Practices.Unity
de l'assemblée. Théoriquement, vous souhaitez corriger cela avec un assembly de redirection, comme suit:
<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>
Toutefois, cela ne semble pas fonctionner.
Des suggestions?
source d'informationauteur Ken Smith
Vous devez vous connecter pour publier un commentaire.
Cela peut être un plus à jour, la réponse à comment la mise à niveau de l'Unité 3.5.1 4.0.1.
Type "IUnityContainer" est défini dans une assemblée qui n'est pas référencé. Vous devez ajouter une référence à l'assembly " Microsoft.Les pratiques.L'unité, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
Soit via le Gestionnaire de paquets ou Console NuGet:
Code:
Eh bien, ce est probablement superflu maintenant, mais le problème, apparemment, avait quelque chose à voir avec l'Unité 3.5.1406, qui a tiré vers le bas, et l'a remplacé avec Unity 4.0. J'ai aussi remplacé les anciens, apparemment non pris en charge à l'Unité.WebApi bibliothèque qui n'a pas été mis à jour à plusieurs années, et l'a remplacée par la plus récente, apparemment, pris en charge à l'Unité.AspNet.WebApi de la bibliothèque. C'est un peu délicat dans NuGet, comme une recherche de "l'Unité WebApi" les retours les plus anciens de la bibliothèque en haut de la liste, et cache la plus récente de la bibliothèque vers le bas, le bas de la première page.
Entre tous, ça fonctionne maintenant, sans aucun problème, je l'ai repéré.
J'ai frappé lors de l'exécution d'un mondial
update-package
.De la restauration de l'Unité version via
install-package Unity -version 3.5.1404
résolu.Vous devez vous assurer également la mise à niveau de l'Unité.AspNet.WebApi version 3.5.1406, non seulement l'Unité. Si vous faites cela, l'erreur devrait disparaître.
J'ai eu le même problème ce matin, fini la désinstallation de v4.0 de l'Unité avec l'Unité.WebAPI. Installé v3.5.1405-prelease de l'Unité, puis ré-installé l'Unité.WebAPI.
Une raison pour l'assemblée de redirection ne fonctionne pas pourrait être un changement dans le Microsoft.Les pratiques.L'Unité PublicKeyToken. J'ai lu qu'entre l'Unité.3.5.1404.0 et de l'Unité.4.0.0 le PublicKeyToken changé de 31bf3856ad364e35 à 6d32ff45e0ccc69f. C'était peut-être déjà changé pour 3.5.1406? Voir: https://github.com/unitycontainer/unity/issues/15
Je viens de suivi en bas de la dernière version de la
Unity Container
qui était l'Unité 3 avril 2013 et a ajouté ça à mes références. Voici un lien vers un PDF sur mon Google Drive détaillant toutes les étapes que j'ai pris.Erreur 1 Le type " de Microsoft.Les pratiques.De l'unité.IUnityContainer " est défini dans une assemblée qui n'est pas référencé. Vous devez ajouter une référence à l'assembly " Microsoft.Les pratiques.L'unité, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
RÉPONSE-ce que pour cette erreur, il suffit d'OUVRIR->Gestionnaire de Package Console et tapez
H> update-package