Ce qui dll ASPX utilisation du compilateur lorsqu'un dll est référencé une, mais plusieurs versions existent dans le dossier bin

StackOverflow https://stackoverflow.com/questions/3907461

Question

J'ai une application Web ASP.NET qui a une référence à 'C: \ références \ Utils.Varia.dll'. Il y a un autre dll référencé qui utilise la version signée de cette dll ( 'C: \ références \ Utils.Varia.Signed.dll').

Maintenant, dans mon ASPX j'ai les importations suivantes directive: <% @ Import Namespace = "Utils.Varia" %>

Cette page utilise une extension de chaîne des Utils.Varia.StringExtensions de.

Mais lors de l'exécution, je reçois l'erreur suivante:

  

Erreur de compilation

     

Description: Une erreur est survenue lors de   la compilation d'une ressource requise   à cette demande. S'il-vous-plaît évaluez   les détails d'erreur spécifiques suivants   et modifier votre code source   de façon appropriée.

     

Compiler Message d'erreur: CS0121: Le   appel est ambigu entre le   suivant les méthodes ou les propriétés:   « CONCENTRA.UTILS.StringExtensions.ToShortReadableString (string,   int) » et   « CONCENTRA.UTILS.StringExtensions.ToShortReadableString (string,   int) '

Alors je suppose que le compilateur ne sait pas si de prendre la méthode d'extension de la signature ou la dll régulière.

Est-ce correct, car si oui, comment puis-je signaler à la dll correcte?

[Modifier]
La chose étrange est que cette erreur du compilateur ne se produit que sur le code dans le fichier ASPX. Si j'utilise la même fonction dans le codebehind, tout fonctionne comme prévu. Quelqu'un peut-il expliquer s'il vous plaît?

En outre, je ne peux pas référence seulement la version signée à la place parce que l'utilisation en fait la version signée est l'exception, tous les autres composants utilisent non signé (à l'exception de 1 apparemment).

Était-ce utile?

La solution

On dirait que vous êtes allé à beaucoup de mal à dessein ressuscitera « DLL Hell » dans votre application, quand par défaut .NET, il est facile de l'éviter. Pourquoi avez-vous deux versions du même ensemble étant référencé dans la même application?

Vous devez supprimer l'une de ces références (le plus probable, il doit être celui non signé qui est retiré), et il suffit d'utiliser le code de cela. Ou changer l'autre de sorte que son code est différent.

Autres conseils

Modifier l'application Web pour référence la version signée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top