Erreur "Impossible de charger le fichier ou l'assembly System.Drawing ou l'une de ses dépendances" sur .Net 2.0, VS2010 et Windows 8
Je suis FileNotFoundException sur un projet Windows Forms Application, avec le message suivant:
Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
À reproduire le problème:
- Sélectionnez Nouveau, Projet, choisissez .Net Framework 2.0 comme la cible et choisir Windows Forms Application comme le type de projet.
- Sur les propriétés de la forme créée par défaut, sélectionnez une valeur pour la propriété Icon. Tout .ico fichier. Cela permettra d'intégrer le fichier sur le fichier resx.
- Compiler et exécuter l'application.
Quand je fais cela, le programme s'arrête sur la ligne this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
avec l'exception suivante:
System.IO.FileNotFoundException was unhandled
Message=Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Source=mscorlib
FileName=System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Je reçois ce sur Visual Studio 2010 SP1, récemment installé sur Windows 8 Developer Preview. Si je change les propriétés du projet pour cible .Net Framework 4, l'erreur disparaît.
Sur la Form1.fichier resx, je peux voir que la version du Système.Le dessin de l'assemblée est explicitement indiqué comme 2.0:
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
Des idées?
source d'informationauteur Leonardo
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une solution possible, essayez ceci:
Ouvrir le Fichier resx dans le Concepteur et l'ensemble de la accessmodifier de public, pas de génération de code.
Edit: il y a une solution de contournement, mais très ennuyeux.
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luzg93cy5gb3jtcywgvmvyc2lvbj00ljaumc4w
POUR
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luzg93cy5gb3jtcywgvmvyc2lvbj0yljaumc4w
**REMARQUE: la seule différence, ce sont les personnages à la fin "j00LjAuMC4w' "j0yLjAuMC4w"
Ce qui doit être fait CHAQUE FOIS que vous ouvrez le formulaire en mode Concepteur.
Microsoft dit qu'ils vont le résoudre dans les prochaines VS version...
Source: http://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020
C'est un bug. Je l'ai vu aussi. Cela se produit parce que votre .fichier resx vers 4.0.0.0 version de Système.Dessin où l'on n'existe pas. Pour surmonter ce problème j'ai l'habitude de modifier l' .resx dans le bloc-notes pour modifier 4.0.0.0 à 2.0.0.0. Le bug est introduit en suivant les étapes exactes que vous avez décrites.
Ce problème peut se produire si .net 4.5 aperçu resgen est utilisé pour créer les fichiers de ressources.
J'ai le même problème sur mon ordinateur portable(Windows 7, VS2010 Premium, VS11 Developer Preview).
J'ai eu ce problème avec un simple projet de formulaires quand je dis "localisable=true' sur un formulaire. Dans mon cas, sont pas de données d'image impliqués. Le projet est défini .net 3.5
Si je puis copier ce projet à un autre ordinateur(Windows 7, VS2010 Premium) et essayez de déboguer, l'erreur reste.
L'erreur disparaît si je nettoyer la solution(pas le projet)(ou supprimer bin/obj à la main)
Si je puis copier cette solution revient à mon ordinateur portable, l'erreur a disparu, mais je ne peux pas le voir à nouveau le formulaire dans la vue de conception
'Error message: at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)'
La raison de tout ceci semble être la .version net dans l' *.Le concepteur.cs fichiers.
Quelqu'un peut me dire où je peux configurer resgen version est utilisée lorsque vous traitez avec .net 3.5 projets?
J'ai eu ce problème et trouvé bizarrement eu à faire avec .Net 4.5 beta. Désinstaller, et réinstaller .Net 4.0 est la cause du problème pour s'en aller. Vous ne savez pas si il y a un moyen d'avoir .Net 4.5 beta installé et utiliser les ressources d'un .Net 2.0 projet en même temps.
J'ai eu le même problème.
Je l'ai réparé .net 4.5.1 et il a fixé.
Récemment, j'ai eu le même message d'erreur lorsqu'un client m'a demandé le déclassement d'une application.
À l'aide de Visual Studio 2010 Professional, j'ai changé le framework cible .NET Framework 4 .NET Framework 3.5. Bâtiment a ensuite échoué avec le message d'erreur. La solution a été de supprimer le fichier de l'image à l'origine du problème de l'application des ressources. Ajoutant à nouveau, le Système.Dessin version a été répertorié comme 2.0.0.0, et la construction a réussi.
J'ai rencontré le même problème et aucune des suggestions ci-dessus ont travaillé pour moi, j'ai donc fait la suivante :
Vous ouvrir de Projet
Accédez à l'Explorateur de solutions
Développez le groupe de Référence
Supprimer le Système.Dessin de référence
Clic droit sur le groupe de Référence
Ajouter La Référence
Sur l' ".NET" de l'onglet, recherche pour le Système.Dessin pour ajouter la référence
J'ai eu même problème.. avec mon framework 2.0 Projet de garder le référencement 4.0 dll. La façon dont j'ai été en mesure de le réparer... il suffit d'aller à votre référence de projet -> sélectionnez "Système.Dessin" -> Propriétés et sélectionnez utiliser la version exacte=true
Cela forcera à utiliser framework 2.0 dll.
Espère que cette aide.
Cheers!!!
J'ai également rencontré ce problème, et dans mon cas, la cause de la construction de deux essentiellement dupliquer des projets en parallèle, l'une de ciblage .NET 2.0 et l'autre de ciblage .NET 4.0, à la fois contenant essentiellement le même code et les ressources. Si le timing était bon, le 2.0 projet serait de récupérer un fichier de sortie à partir de la version 4.0 projet, et à la fin de référencement 4.0 bibliothèques.
Je l'ai fixée par la construction de projets dans la série, en faisant de l'un dépend de l'autre.
(Je reconnais que ce n'était probablement pas la cause du problème original posté par @Léonard de vinci, mais il peut être utile pour les futurs visiteurs qui rencontre cette erreur avec un double similaire-projet d'installation.)
J'ai rencontré le même problème dans Xamarin Projet
Vraiment ce ne sera pas travaillé dans Xamarin, car il est dll de windows.
Prendre un coup d'oeil à la discussion,
https://forums.xamarin.com/discussion/14340/adding-a-reference-to-net-assembly
Ce n'est pas pertinente pour l'OP de la situation, mais si vous obtenez cette erreur lors de la connexion à la
ResourceWriter
classe pour convertir un.resx
fichier dans un.resources
fichier, alors lisez la suite. Je suis tombé sur cette erreur et la seule façon que j'ai trouvée pour résoudre ce fut d'analyser les données pour"System.Drawing, Version=4.0.0.0"
et de le remplacer avec"System.Drawing, Version=2.0.0.0"
. Voici mon code (c'est une partie d'un Roslyn modification):Edit: Dans une précédente version de cette réponse, j'ai utilisé un
ResourceWriter.TypeNameConverter
méthode. Qui a travaillé dans certaines situations mais pas dans d'autres, et il y a un rapport de bug qui indique qu'il y a peut être des problèmes avec ce code, au moins pour le code correspondant .Net De Base: https://github.com/dotnet/corefx/issues/11083 .