35 votes

Inclure les forfaits NuGet dans TeamCity

J'ai récemment commencé à utiliser de NuGet pour gérer les paquets externes. Pour l'instant j'en ai besoin pour NLog. Tout fonctionne bien quand je Construire le projet dans visual studio 2012. Cependant, j'essaie TeamCity comme un serveur CI (je suis assez nouveau à l'IC) et il me donne l'erreur suivante:

[Csc] SomeNamespace\SomeClass.cs(10, 7): error CS0246: 
The type or namespace name 'NLog' could not be found 
(are you missing a using directive or an assembly reference?)

(cette erreur est répétée tout au long de l'endroit où je utiliser NLog)

Maintenant, je n'ai pas inclure les 'packages/ dossier SVN, car je pensais que c'était une bonne pratique de ne pas inclure les fichiers binaires et laissez MSBuild dans TeamCity les télécharger sur son propre. Cependant, c'est clairement pas le faire. Je NE la " packages.xml fichier SVN. Que puis-je vérifier pour voir ce qui ne va pas?

Mise à jour Grâce à @DavidBrabant j'ai été poussé dans la bonne direction. Cependant, maintenant, je reçois l'erreur suivante dans TeamCity:

Package restore is disabled by default. To give consent, open the Visual Studio Options dialog, 
click on Package Manager node and check 'Allow NuGet to download missing packages during build.'

Cependant, je ne suis pas dans Visual Studio, mais TeamCity, donc je ne sais pas comment définir le "consentement" de vrai! J'ai tenté de RestorePackages 'true' dans le NuGet.les objectifs de fichier:

<RestorePackages Condition="  '$(RestorePackages)' == '' ">true</RestorePackages>

mais cela n'a pas fonctionné.

Mise à jour 2 Pour le faire fonctionner, j'ai également définir la propriété suivante NuGet.objectifs:

<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'true' ">false</RequireRestoreConsent>

De ce fait l'accumulation d'exécuter avec succès!

22voto

David Brabant Points 11159

Le activer le package de restaurer la fonction de NuGet vous permet de très facilement définir les pré-construire une partie du flux de travail. Pour ce faire, cliquez-droit sur le nœud de solution dans Visual Studio, l'Explorateur de solutions, puis cliquez sur Activer le Package NuGet option de Restauration. Notez que vous devez disposer de la NuGet Extension de Visual Studio installé sur votre système. Si vous le faites, et vous ne voyez toujours pas ce point de menu apparaît, vous avez déjà activé cette option, ou si vous avez un dossier nommé .nuget dans votre solution d'annuaire.

Après avoir mis en place cette option, vous pouvez maintenant supprimer tous les sous-dossiers de votre colis répertoire d'installation, par défaut $(SolutionDir)\paquets, sauf pour les dépôts.fichier de config, et votre solution doit toujours compiler correctement. Lors de la compilation, vous devriez voir NuGet installation des traces dans la fenêtre sortie de Visual Studio, et vous devriez voir le nécessaire packages NuGet réapparaître dans le package d'installation de répertoire.

Voir aussi l'Utilisation de Nuget sans commettre des forfaits.

12voto

craastad Points 697

Juste pour répéter sur la mise à jour 2. Si vous êtes tombé par hasard ici à la recherche d’une solution rapide pour que TeamCity ne télécharge pas les packages NuGet, essayez de modifier cette ligne.

 <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
 

à cette ligne

 <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'true' ">false</RequireRestoreConsent>
 

dans votre fichier NuGet.targets et cela devrait fonctionner.

8voto

Nate Rickard Points 425

Dans TeamCity v8, j'ai été en mesure de résoudre le "restaurer" paquet d'erreur à l'aide d'une variable d'environnement dans les TC.

Voir:

http://johanleino.wordpress.com/2013/03/19/using-teamcity-for-asp-net-development-part-2/

et

http://confluence.jetbrains.com/display/TCD7/Configuring+Build+Parameters#ConfiguringBuildParameters-SystemPropertiesandEnvironmentVariables

Paramètre env.EnableNuGetPackageRestore "true" comme une variable d'environnement à l'échelle du projet permettra de résoudre le problème pour toutes les configurations de build. Se sent un peu mieux de faire ce que la modification de la NuGet.objectifs fichier à mon humble avis.

4voto

Bounz Points 41

Jetez un oeil à ce post: http://johanleino.wordpress.com/2013/06/17/making-use-of-teamcitys-nuget-capabilities-part-2/

Comme décrit ici, j'ai ajouté la première étape de construction "NuGet Installer", créé quelques modifications et maintenant les paquets sont automatiquement restaurés.

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