web-dev-qa-db-fra.com

supprimer la restauration du paquet Nuget de la solution

J'ai ajouté la fonctionnalité de restauration de paquet de nuget récente à une solution utilisant 'Enable NuGet package Restore': http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

Cependant, mon serveur de build est tombé en panne et je n'avais pas le temps de le réparer. Je voulais donc le supprimer. Pour autant que je sache, il n'y a pas d'option pour cela. J'ai donc supprimé manuellement la ligne suivante de tous mes fichiers * .csproj:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

Le problème est maintenant que chaque fois que mes fichiers * .csproj sont extraits ou ouvrent ma solution, la ligne est automatiquement ajoutée à nouveau, cassant ma construction si je l'enregistre accidentellement dans :(

Des idées comment je peux l'enlever de façon permanente?

MISE À JOUR: malgré la réponse ci-dessous, le problème persiste-t-il toujours après l'ouverture de la solution?

146
Wiebe Tijsma

Je n'avais pas l'air très bien, il y a une autre propriété ajoutée aux fichiers du projet:

<RestorePackages>true</RestorePackages>

Il suffit de supprimer ceci ainsi que toutes ces lignes manuellement de tous les fichiers * .csproj:

  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />

METTRE À JOUR:

Il s'avère que c'est un petit bug persistant, si vous éditez manuellement vos fichiers de projet, assurez-vous de fermer la solution et de supprimer toutes les lignes du projet en même temps , sinon, elles sont simplement ajoutées à nouveau une fois le projet rechargé. ...

UPDATE2:

Supprimer également le dossier .nuget de la racine de la solution

UPDATE3:

Une version ultérieure de NuGet ajoute une autre section que vous devez supprimer: 

 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.Microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>

Update4

À l'intérieur du NuGet.Targets situé dans le dossier .nuget, une autre section est ajoutée aux nouveaux projets ... changez-la en false.

<!-- We need to ensure packages are restored prior to Assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
    RestorePackages;
    $(BuildDependsOn);
</BuildDependsOn>
211
Wiebe Tijsma

Pour désactiver la restauration de package Nuget:

  1. Supprimer le dossier .nuget
  2. Supprimer des lignes spécifiques de tous les fichiers .csproj

Lignes à supprimer:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<RestorePackages>true</RestorePackages>

Remarque: Assurez-vous de faire toutes les modifications en une fois avant de recharger la solution, sinon cela les rajoutera.

Ceci est basé sur l'article suivant: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

Vous pouvez également vérifier que cette option est désactivée: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

48
angularsen

N'est-ce pas ce paramètre ici?

Options ... -> Nuget Package Manager -> [décocher] Autoriser Nuget à télécharger les packages manquants

enter image description here

J'utilise Visual Studio Professional + Resharper 8.2

8
orad

Les solutions qui utilisent actuellement la restauration de package MSBuild-Integrated peuvent être migrées vers la restauration automatique de package. D'après ce que j'ai compris, cela devrait aider ceux qui rencontrent des problèmes de construction de CI. (S'il vous plaît corrigez-moi si je me trompe).

Veuillez vous reporter au document sur le site Web de nuget: Migration des solutions MSBuild-Integrated pour utiliser la restauration automatique des paquets à l’adresse http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Il existe des informations pour la conversion avec et sans TFS.

David Ebbo a également publié des informations sur http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

5
James Bradt

Nous avons en fait un article sur le blog et à la fin de celui-ci, un script PowerShell a été mentionné pour faciliter la migration.

http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

3
Dan Liu

NuGet a publié un article sur la migration vers la restauration automatique de paquetages: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Il y a un script powershell référencé dans l'article qui se chargera de supprimer les lignes nécessaires automatiquement (et de manière récursive): https://github.com/owen2/AutomaticPackageRestoreMigrationScript/ blob/master/migrateToAutomaticPackageRestore.ps1

Proposer une option Désactiver la restauration du paquet NuGet directement est marqué comme ne résoudra pas le problème: https://nuget.codeplex.com/workitem/1883

3
Nitin Agarwal

J'ai suivi la solution acceptée sans succès en 2012. Cela fonctionnait bien,

  1. Fermer complètement le VS
  2. Mettez à jour le <RestorePackages>true</RestorePackages> en <RestorePackages>false</RestorePackages> et supprimez la ligne <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
  3. Également renommé le nuget.exe en nuget.exe.NotExe
2
Daryl

Pour ceux qui ont encore besoin de nettoyer un projet en utilisant l’ancien style de restauration de paquet NuGet, l’outil IFix disponible ici automatise le processus.

Il suffit d’exécuter le programme d’installation (IFix sera ajouté à PATH), puis exécutez ce qui suit:

IFix nugetrestore --fix

Vous pouvez d'abord l'exécuter en mode vérification pour voir ce qu'il va nettoyer:

IFix nugetrestore --check
2
Simon Fox

Accédez au répertoire de votre solution où se trouvent le dossier [$(SolutionDir)\.nuget\nuget.targets] .nuget et le fichier nuget.targets, supprimez-le, .__ et modifiez les lignes de suppression de votre csproj pour la dernière fois.

Le problème ne reviendra pas à vous déranger à nouveau.

1
arvind

J'ai eu le même problème. Ce que j'ai fini par faire: 1) Allez dans chaque fichier .csproj du projet dans la solution, ouvrez-le dans le bloc-notes puis supprimez la partie du fichier xml et enregistrez-la. 

2) Ensuite, j'ai supprimé tous les fichiers package.config de la solution. 

3) Ensuite, j'ai dû supprimer les dossiers .nuget et package. 

À ce stade, j'avais une solution totalement gratuite de NuGet. 

4) Ensuite, j'ai manuellement référencé toutes les DLL nécessaires et cliqué sur Compile. La solution a fonctionné comme un champion sans les packages NuGet.

1
Andy30acre

Supprimez le fichier packages.config de votre solution.

0
Latency

J'ai accidentellement activé cette option de "restauration de paquet" lors de l'ouverture de mon projet dans VS2012 RC et commencé à recevoir des erreurs ressemblant à ceci:

"Erreur 1 Impossible de localiser 'C:\FolderX\SomeProject.nuget\nuget.exe'"

Pour corriger l'erreur, j'ai suivi les instructions ci-dessus, ouvert chaque fichier de projet dans le bloc-notes et supprimé cette ligne RestorePackage.

0
Dmitry Lyalin

J'ai pu résoudre ce problème en prenant les mesures suivantes:

1) Assurez-vous de sauvegarder toutes vos modifications actuelles des fichiers extraits.

2) supprimez physiquement le dossier de la solution de votre C:\(chemin mappé vers TFS).

3) Obtenez les dernières nouvelles de TFS pour votre solution.

4) copiez (le cas échéant) vos modifications à partir de la sauvegarde que vous avez effectuée à l'étape 1.

j'espère que cela pourra aider !

0
Rajesh