Impossible de charger le fichier ou l'assembly 'Système.ValueTuple'

J'ai un VS2017 projet qui permet de compiler une DLL qui est alors appelé par un fichier EXE écrit par quelqu'un d'autre. Les deux projets de la cible .Net Framework 4.6.2. J'ai réécrit un de mes DLL méthodes de retour d'un n-uplet et également importé l'associé de package NuGet. Quand je compile le projet, il comprend System.ValueTuple.dll dans le répertoire de sortie qui est ensuite déployée sur d'autres machines où ma DLL est chargée et appelé par le fichier EXE. Mais quand le fichier EXE tente d'appeler la méthode qui retourne un tuple il se bloque:

Erreur inattendue n'a pas Pu charger le fichier ou l'assembly 'Système.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Je ne comprends pas pourquoi il n'est pas de trouver le fichier, puisque c'est dans le même dossier que mon fichier DLL. Apparemment MS ne comprend pas cette assemblée .Net Framework 4.6.2.

Remarque que ma DLL est enregistrée dans Windows à l'aide d'une machine.fichier de configuration. Je suppose que si j'ajoute aussi System.ValueTuple.dll pour ce fichier, il va travailler (n'ai pas encore essayé et pas sûr que c'est la meilleure approche, en particulier à long terme.) Est-il une meilleure façon, en plus de l'attente pour 4.6.3 et en espérant qu'il comprend cette assemblée?

"On remarque que ma DLL est enregistrée dans Windows à l'aide d'une machine.fichier de configuration" - voulez-vous dire de votre fichier DLL est d'être mis dans le GAC, mais System.ValueTuple.dll n'est-ce pas? Je peux voir comment cela pourrait causer des problèmes.
Oui. Mais j'étais sous l'hypothèse que Windows va chercher référencé Dll dans le même dossier que l'application d'appel, qui dans ce cas est ma DLL.
Le chemin de la DLL ne joue jamais un rôle à trouver des assemblées, seul le démarrage de l'EXE.
ValueTuple est construite dans .NET Framework 4.7, qui vient d'être annoncée et sera publié sous peu. Cela dit, je ne comprends pas pourquoi vous avez rencontré un problème avec 4.6.2, depuis l'importation de la ValueTuple paquet de nuget. Je ne suis pas un expert de l'assemblée de liaison, mais votre solution (ci-dessous) m'inquiète. Hésitez pas à déposer un sujet sur la rolsyn repo avec une petite repro projet (zip).
J'ai rencontré le même problème après la mise à jour (apparemment à l'onu) les packages Nuget. La mise à niveau vers 4.7.2 résolu le problème, mais j'ai également eu à supprimer les références.

OriginalL'auteur Mike Lowery | 2017-03-17