3
votes

Comment installer System.Drawing.Common dans un projet qui utilise «.NETFramework, Version = v4.5.2»?

J'essaye d'écrire des tests unitaires en C # dans une application '.NETFramework, Version = v4.5.2' mais tous les tests donnent l'erreur suivante:

'System.IO.FileNotFoundException: impossible de charger le fichier ou l'assembly 'System.Drawing.Common, Version = 0.0.0.0, Culture = neutre, PublicKeyToken = cc7b13ffcd2ddd51 '. Le système ne trouve pas le fichier spécifié. "

Lorsque j'essaye d'installer System.Drawing.Common , j'obtiens l'erreur suivante du package NuGet:

Impossible d'installer le package 'System.Drawing.Common 4.5.1'. Vous essayez d'installer ce package dans un projet qui cible '.NETFramework, Version = v4.5.2', mais le package ne contient aucune référence d'assembly ou fichier de contenu compatible avec ce framework. Pour plus informations, contactez l'auteur du package.

Je ne peux pas changer la version de l'application ou le framework (.NET Core 2.1) et toute autre astuce que j'ai trouvée en ligne n'a pas fonctionné (ou a généré plus d'erreurs).

Aide?

MISE À JOUR: J'ai réussi à le résoudre en redémarrant Visual Studio, en changeant le framework en 4.6.1 (ce que je ne pouvais pas faire auparavant) et en ajoutant la référence. Désolé pour les explications peu claires, je suis un débutant et pour moi, Visual Studio fonctionne de manière mystérieuse. Merci à tous


5 commentaires

Utilisez-vous 4.5.x ou Core 2.x? Je suis confus.


stackoverflow.com/questions/9190885/...


Corrigez-moi si je suis usé, mais il me semble que vous essayez d'ajouter le package nuget System.Drawing.Common à une application .net 4.5. Dans .net 4.5 system.drawing est une partie intégrée et il vous suffit de l'ajouter comme référence sous Assemblies (Reference Manager)


J'ai une solution avec plusieurs projets. Le projet avec lequel je travaille a le framework cible Core 2.x. L'erreur mentionne .net 4.5.2.


J'essaye d'ajouter la référence au package Drawing.Common. J'ai une dll sur mon ordinateur mais l'application ne la prend pas, alors j'ai essayé de l'installer à nouveau et j'ai obtenu les autres erreurs


4 Réponses :


0
votes

vous pouvez essayer d'utiliser l'une des bibliothèques décrites ici à la place https : //devblogs.microsoft.com/dotnet/net-core-image-processing/

vous pouvez essayer d'utiliser https://www.nuget.org/packages /CoreCompat.System.Drawing/ également et peut-être essayer de changer le framework de votre application en .net standard 2.0?


2 commentaires

J'ai essayé de l'installer directement et de l'ajouter au projet, mais il ne verra pas ma dll. J'utilise System.Drawing pour une seule ligne (j'ai besoin d'obtenir le jeu de données à partir d'une conception de rapport pour comparer) et je ne peux pas modifier la solution entière pour mon projet de test


Vous avez dit que vous vouliez écrire des tests unitaires, la dernière fois que j'ai vu un problème lorsque quelqu'un n'était pas en mesure d'ajouter une référence au projet MS Test, il a donc dû reconstruire toute la solution et éteindre et rallumer tout Visual Studio ... Mais je devinez plutôt que votre problème est lié à la version de votre framework. Essayez-vous d'ajouter une référence via nuget à toute votre solution ou uniquement à votre projet .net core 2.1? Vous pouvez essayer de mettre à jour la version du framework .net pour la rendre compatible avec la norme .net 2.0 docs.microsoft.com/pl-pl/dotnet/standard/net-standard



5
votes

dans NuGet, mettez cette ligne: Install-Package System.Drawing.Common -Version 4.5.2

dans .NET CLI mettez: dotnet add package System.Drawing.Common - version 4.5.2

dans Paket CLI, mettez: paket ajouter System.Drawing.Common - version 4.5.2


2 commentaires

C'est là que j'ai eu la deuxième erreur. Je n'ai même pas trouvé System.Drawing dans le nuget Manage ... pour solution


Ajouter: System.Drawing.Bitmap System.Drawing.BitmapData System.Drawing.Brush System.Drawing.Font System.Drawing.Graphics System.Drawing.Icon



2
votes

J'ai eu le même problème. J'ai cloné la solution https://github.com/barnhill/barcodelib . Il comporte deux projets: le projet de bibliothèque cible .Net Standard 2.0 et fait référence à System.Drawings.Common. L'exemple de projet dépend de la bibliothèque et fait référence à System.Drawings.Common. Le projet d'exemple ne se compilait pas en raison de la même erreur.

Ma solution consistait simplement à supprimer la référence à System.Drawings.Common dans les packages nuget et à la lire (cliquez sur Exemple de projet> Gérer les packages nuget> Parcourir installé, supprimez le package System.Drawings.Common, puis rajoutez-le) , déchargez le projet puis rechargez-le à nouveau

M'a aidé.


0 commentaires

0
votes

C'est un peu bizarre mais cela a fonctionné de façon spectaculaire, alors je vais le mentionner. J'ai construit un petit projet de console ent en 2017 qui était censé lire une base de données oracle. Quand j'ai commencé à l'exécuter, j'ai eu l'erreur System.Drawing.Common mentionnée ci-dessus. Cela semblait stupide parce que je ne faisais rien du tout en rapport avec le dessin. Dans Manage Nuget Packages, j'ai supprimé le pilote Oracle.ManagedDataAccess et ajouté Oracle.ManagedDataAccess.Core et l'erreur System.Drawing.Common a disparu et j'ai pu lire ma base de données oracle. Je suggère donc qu'avec NuGet, vous pouvez choisir des éléments dont vous n'avez vraiment pas besoin et si vous avez le choix pour vos packages NuGet, essayez-en différents. Cela peut également être utile avec la façon dont mon organisation a géré nuget pour l'entreprise Visual Studio 2017.


0 commentaires