web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'erreur d'assemblage dans la bibliothèque de classes .Net Standard 2.0

J'ai un projet de bibliothèque de classes .NET Standard 2.0 avec le package Nuget installé System.Data.SqlClient version 4.4.0 et un projet Windows Form .NET Framework 4.7 faisant référence à cette bibliothèque de classes.

L'installation du package Nuget et la construction de la solution aboutissent. mais au moment de l'exécution, chaque fois que le code atteint une méthode contenant quelque chose de SqlClient Assembly (par exemple une instance de SqlConnection), l'erreur suivante apparaît:

Impossible de charger le fichier ou l'assembly 'System.Data.SqlClient, Version = 4.2.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a 'ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Considérant cette question, je suppose que le problème était également présent dans la dernière version majeure du paquet Nuget.

Modifier

J'ai téléchargé le package Nuget et l'ai décompressé. Le dossier\ref\netstandard2.0 a été copié manuellement dans le dossier System.DataSqlClient.dll dans le dossier\bin\Debug de mon projet Windows Form. La situation exacte s'est également produite avec le package Microsoft.Win32.Registry. Donc, j'étais presque convaincu que c'est de ma faute et que je fais quelque chose de mal, mais lorsque je l'ai testé avec System.Drawing.Primitive Package, il fonctionnait parfaitement sans qu'il soit nécessaire de copier une dll. Maintenant je suis vraiment confus.

9
sahar

J'imagine que vous l'avez peut-être déjà compris, mais espérez que cela aiderait quelqu'un - vous a également perdu du temps.

Donc, pour que tout fonctionne, vous devez référencer System.Data.SqlClient dans un projet Windows Form qui référence votre bibliothèque standard .NET. À partir de là, tout devrait fonctionner comme un charme

Comme vous l'avez déjà mentionné, System.Data.SqlClient.dll n'était pas dans le répertoire de sortie . On dirait que .NET Standard Library n'a pas récupéré le fichier binaire de la bibliothèque dépendante. Il n'y a rien comme l'option "Copier local" dans les références .NET Standard, donc je ne vois aucun moyen de vérifier ou de définir ce comportement aussi

10
Bogdan K

J'ai eu le même problème. 

La solution pour moi consistait à ajouter une dépendance à partir de nuget pour le dernier système System.Data.SqlClient dans mon projet de bibliothèque standard .NET.

2
Karol Jackiewicz

J'ai eu le même problème. Le .NETStandard Assembly a été ajouté en tant que référence à mon projet WPF. J'avais besoin de faire des changements dans le .csproj du projet WPF.

La solution mentionnée dans https://github.com/dotnet/sdk/issues/901 le corrige.

Pas:

  1. Modifiez votre fichier .csproj principal dans le bloc-notes.
  2. Ajoutez les deux lignes ci-dessous dans chacune que vous trouvez dedans.

    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    
  3. Nettoyez et reconstruisez votre solution.

 Yes... I used Notepad.

1
KSK

J'ai eu un problème similaire, bindingRedirect m'a aidé dans mon cas: 

<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0"/>

0
Peter Vozhdai