4 votes

Dans un projet ciblant .NET 4.6.2, comment mettre en œuvre une interface définie dans une assemblée .NET Standard 1.5 ?

J'ai deux projets distincts, appelons-les Alpha et Bravo.

Le projet Alpha cible uniquement le framework net462 dans son fichier project.json, tandis que le projet Bravo cible uniquement netstandard1.5. Ces 2 frameworks sont compatibles selon Microsoft .

Le projet Alpha fait référence à l'assemblage du projet Bravo. En particulier, Alpha doit implémenter une interface définie dans Bravo. Appelons cette interface IProblematic. Cette interface traite principalement des en-têtes, et définit des méthodes comme celle-ci

bool DoStuff(List<KeyValuePair<string, IEnumerable<string>>> requestHeaders, List<string> rolesList)

Le projet Alpha déclare une classe qui implémente cette interface.

public bool DoStuff(List<KeyValuePair<string, IEnumerable<string>>> requestHeaders, List<string> rolesList)  {... }

Jusqu'à présent, tout va bien. Mais pendant l'exécution, je suis assailli par des erreurs telles que Unable to load one or more of the requested types . Je pense que la source des erreurs provient des types de collections.

En utilisant la fonction "aller à la définition" de Visual Studio, je peux voir que le projet Alpha (le projet 462) utilise System.Collections.Generic défini dans .. \Framework\v4.0.30319\mscorlib.dll alors que si je fais la même chose dans les collections du projet Bravo, il m'indique qu'il utilise l'option System.Collections.Generic défini dans .. \netstandard1.3\System.Collections.dll .

Ainsi, ma question est la suivante : comment puis-je faire en sorte que le projet Alpha utilise l'assemblage Collections correct lors de l'implémentation de l'interface netstandard1.5, au lieu d'utiliser les collections de mscorlib ? Cela ne devrait-il pas être un problème mineur, étant donné que les deux frameworks sont compatibles ?

Merci d'avance à tous !

0voto

dan_rozenberg Points 36

Après quelques recherches, j'ai découvert que le problème est dû au fait que mon application net462 dépend (indirectement) des éléments suivants System.Collections.Immutable: "1.3.0 et ma bibliothèque netstandard1.5 a une dépendance sur "NETStandard.Library": "1.6.0" . Je vais créer un fil de discussion plus ciblé avec plus de code et de traces de pile. Je m'excuse pour le délai de réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X