Ce qui dll ASPX utilisation du compilateur lorsqu'un dll est référencé une, mais plusieurs versions existent dans le dossier bin
-
29-09-2019 - |
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).
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.