83 votes

Comment faire en sorte que mon paquet NuGet géré prenne en charge les projets C ++ / CLI?

J'ai fait un package NuGet qui fonctionne bien lorsque je l'utilise à partir d'un projet C#. Il contient une DLL à la lib/net40 répertoire, et la DLL est ajouté comme une référence.

Maintenant que NuGet prend en charge le C++, comment j'ai fait modifier mon forfait, de sorte que la DLL peuvent être ajoutés en tant que référence en C++/CLI projet? Je ne trouve pas de tutoriels expliquant cela. Si j'essaie d'ajouter simplement le paquet aussi, j'obtiens l'erreur suivante:

Vous tentez d'installer ce paquet dans un projet qui vise les "Indigènes", Version=v0.0", mais le paquet ne contient pas toutes les références d'assembly ou le contenu des fichiers qui sont compatibles avec ce cadre.

On pourrait penser que la solution est de mettre les fichiers dans lib/natif, mais selon http://docs.nuget.org/docs/reference/support-for-native-projects, qui n'est pas pris en charge. Aussi, il suffit de mettre la DLL directement dans lib ne semble pas faire quoi que ce soit.

Apparemment, je suis censé faire avec un .props ou .targets fichier build/natif, mais que dois-je mettre dans ces fichiers pour faire ce travail ?

6voto

Patrick O'Hara Points 86

Comme mentionné dans la réponse à ce port (Nuget ne pas installer Entity Framework en C++/CLI projet), NuGet pas les modifications de C++/CLI projet pour vous. Il ne sera cependant télécharger et décompresser la dépendance. Nous l'utilisons depuis la ligne de commande dans le cadre de nos dépendances. La ligne de commande devrait ressembler à quelque chose comme ceci:

/.NuGet/NuGet.exe
      Install 
      -NonInteractive 
      -ConfigFile $ENV{SRC_ROOT}/.nuget/NuGet.config 
      -OutputDirectory $ENV{SRC_ROOT}/packages 
      $ENV{SRC_ROOT}/packages.config

Notez que la ligne de commande areguments sont séparées l'une de une ligne pour rendre la lecture plus facile. Aussi nous avons décidé de vérifier NuGet dans notre source de contrôle de l'onu .NuGet dossier. Le but était de rendre plus facile l'installation d'une machine de compilation pour nos différents environnements (pas tous qui utilisent Visual Studio). Une fois que vous avez exécuté cette commande pour la première fois, vous devez ajouter manuellement les dépendances de votre C++/CLI projet.
Espérons que cela aide.

-8voto

Omar H Points 1

Les informations d'identification sont en réalité cryptées avec la clé machine à laquelle la source du package a été ajoutée. Sauf si vous utilisez la variante en texte brut, la commande setApiKey devrait probablement être exécutée dans le cadre de la construction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X