web-dev-qa-db-fra.com

Comment utiliser System.Data dans une application console .NET Core RC2 (Linux, Debian 8)?

J'ai installé .NET Core RC2 sur un système Debian 8 AMD64 et j'aimerais vérifier s'il est possible d'interroger une instance de Microsoft SQL Server.

J'aimerais donc ajouter à mon projet une dépendance sur l'assembly System.Data.SqlClient.

Actuellement, mon fichier de projet créé en exécutant l'outil CLI dotnet new se présente comme suit:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    }
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}

En utilisant cette réponse à une requête similaire, j’ai pu ajouter une référence à System.Data.Common en changeant la

"frameworks": {
  "netcoreapp1.0": {
    "imports": "dnxcore50"
  }
}

fragment à

"frameworks": {
  "netcoreapp1.0": {
    "imports": "dnxcore50",
    "dependencies": {
      "System.Data.Common": "*"
    }
  }
}

ce qui a fait dotnet restore utiliser NuGet pour télécharger un tas de choses.

J'ai ensuite essayé de changer ce fragment pour le lire

"frameworks": {
  "netcoreapp1.0": {
    "imports": "dnxcore50",
    "dependencies": {
      "System.Data.SqlClient": "*"
    }
  }
}

mais NuGet dit que c'est

Impossible de résoudre 'System.Data.SqlClient' pour '.NETCoreApp, Version = v1.0'.

Si je change la chaîne de version pour lire "4.1.0-rc3- *", le message d'erreur devient plus précis:

Impossible de résoudre 'System.Data.SqlClient (> = 4.1.0-rc3)' pour '.NETCoreApp, Version = v1.0'.

Ce qui me laisse perplexe, c'est que la galerie de paquets NuGet dédiée à .NET Core répertorie explicitement System.Data.SqlClient comme disponible.

Que puis-je faire pour ajouter une référence à System.Data.SqlClient Assembly à mon projet et le faire télécharger par NuGet?

En passant, je joue actuellement dans une console ordinaire avec uniquement l'outil dotnet de la CLI. Existe-t-il un moyen de gérer les dépendances de projet pour un projet .NET Core sans recourir à l'installation d'EDI?

7
kostix

Comme poke déjà annoté dans le commentaire est correct. Spécifier une version sur System.Data.SqlClient rend votre restauration heureuse;)

Pourquoi donc? System.Data.SqlClient existe dans http://nuget.org gallery. Ne pas spécifier de version ("") n'est pas autorisé en dehors des limites d'un projet (comme un paquet de flux de nuget) et spécifier uniquement un étoile "*" (vous ne devez jamais le faire, cela permet de modifier les modifications) restaurez la version la plus élevée disponible. Comme il n'y a pas d'écurie, l'étoile ne trouvera rien (il y a de la magie avec les tirets derrière). La version RC2 de cette bibliothèque est la version 4.1.0-rc2-24027 mentionnée. Lorsque vous posez la question avec la version 4.1.0-rc2- *, elle utilise la version la plus élevée de la version RC2 (mais il n'y en a qu'une). En comparaison, System.Data.Common a été publié sur nuget.org pour la plate-forme Windows universelle et est trouvé pour cette raison.

La RC3 est la prochaine version et n’est disponible que sur les flux de développement des développeurs .NET Core et ASP.NET Core, et non du flux de nuget public. Vous ne devriez pas jouer avec eux.

10
Thomas

si vous êtes dans le fichier project.json, l’intellisense vous guidera maintenant si vous avez mis à jour le Visual studio avec les derniers outils disponibles.

J'ai ajouté ce qui suit dans l'élément dependencies et cela fonctionne parfaitement.

"System.Data.SqlClient": "4.1.0-rc2-24027",

1
Kiran