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?
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
Vous devez vous connecter pour publier un commentaire.
J'ai juste eu ce problème moi-même. Pas sur Localhost pendant le développement, mais uniquement sur le serveur de production. En fin de compte il s'est avéré être une sorte de conflit entre les deux .Net Framework 4.6.1 et moi ayant du Système.ValueTuple installé à partir de Nuget dans la version 4.5.0.
La solution s'est avéré être, à déclasser le Système.ValueTuple package Nuget à 4.3.0. Puis il a travaillé, comme rien n'avait jamais été un problème.
Je soupçonne que cela ne s'est passé sur le serveur de production, à cause d'une autre version de .net framework est installé.
A fonctionné pour moi aussi - j'ai eu une classe de la bibliothèque de ciblage .NET Standard 1.3 qui a été consommé par une AspNetCore projet axé sur la 2.0. La rétrogradation à la 4.3.0 correction du problème - merci!
OriginalL'auteur Djensen
FWIW, j'ai eu ce problème sur mon projet de tests à l'aide de Moq. Quelqu'un avait mis le projet .NET 4.7, mais j'ai été sur 4.6.2. Ne voulant pas se déplacer à 4,7 encore, la solution était de rétrograder la version Moq 4.7.145. Le Système.ValueTuple v 4.3.1 travaillé de concert avec elle.
OriginalL'auteur malckier
J'ai fait face à la même exception lorsqu'il y a un package nuget incompatibilité de version. (Dans la DLL a été 4.3.1 utilisés dans le programme principal 4.3.0.) J'ai résolu le problème en mettant à niveau les paquets de la même version... Contrôle et à unifier les versions de package pourrait l'espérons, vous aider ainsi.
OriginalL'auteur Ondras
ok c'est complètement faux, mais j'ai coupé
Ce hors de ma web.config de l'application principale.
J'ai été vraiment juste de voir ce qui s'est passé pour voir si il y avait un sous-jacent de dépendance ou de quelque chose, ne s'attendant pas à s'exécuter.
Ce qu'il vient de réaliser sur le travail, sur toutes les nouvelles fonctions que j'ai ajouté dans la dernière quelques jours encore du travail.
OriginalL'auteur Robin Vessey
J'ai résolu ce problème par le Système d'enregistrement.ValueTuple dans mon ordinateur.fichier de config (avec ma propre DLL qui était déjà inscrites). Je n'aime pas particulièrement cette approche, bien que depuis qu'il est dépendant de la version de la DLL qui est sujet à changement à tout moment. Espérons que MS ne fera qu'ajouter à cette assemblée pour la prochaine version de l' .Net Framework.
System.ValueTuple
a été ajouté .Net Framework 4.7.Cela m'a fait fermer mais pour nuget version 4.5, j'ai eu à utiliser les éléments suivants dans mon service windows config <dependentAssembly> <assemblyIdentity nom="le Système de.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutre" /> <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" nouvelleversion="4.0.3.0" /> </dependentAssembly>
OriginalL'auteur Mike Lowery
J'ai eu ce même problème avec une AutoMapper 8.0.0.0 dépendance sur la version 4.5 après la mise à niveau à partir de .NET 4.5.1 à 4.6.1. La réinstallation de la automapper package nuget a fonctionné pour moi.
OriginalL'auteur Brian Swart
Mon problème était que j'étais en développement contre 4.6.1, mais libérant sur 4.7.2. Heureusement, je n'ai pas l'esprit qui .Net cadre de ce projet a été construite, j'ai donc installé 4.7.2 sur mon développeur instance, puis mis à jour tous les packages Nuget.
(Utilisez SQLite sur AWS EC2)
OriginalL'auteur Richard Whitehouse