2012-01-03 19 views
143

ho aggiunto il recente pacchetto di NuGet ripristino funzionalità per una soluzione che utilizza 'Enable NuGet pacchetto Restore': http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packagesrimuovere Pacchetto NuGet ripristino da soluzione

Tuttavia si è rotto il mio server di compilazione e non ho avuto il tempo di fissare così, volevo rimuoverlo. Non c'è alcuna opzione per che, per quanto ne so, così ho rimosso manualmente da tutti i miei file * csproj la seguente riga:

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

Il problema ora è che ogni volta che i file mia * Csproj vengono estratti o aperti la mia soluzione, la linea viene automaticamente aggiunto di nuovo, rompendo la mia generazione, se accidentalmente ho check in :(

Tutte le idee come posso rimuovere in modo permanente

UPDATE: nonostante la risposta qui sotto conserva ancora tornare quando aprire la soluzione, chiunque abbia lo stesso problema?

+2

Non puoi semplicemente ripristinare il changeset nel controllo Sorgente? – Betty

+0

beh, era un bel set di modifiche, ma grazie al tuo commento ho dato un'occhiata, e sembra che abbia aggiunto anche una cartella .nuget nel percorso della soluzione, cancellato anche per vedere se risolve il problema –

+0

Hai gestito riparare il build server? (ed è teamcity?), perché la linea di progetto di importazione che citi sopra è ciò che sta causando il fallimento delle mie build di teamcity – Baldy

risposta

206

Non ho guardato molto bene, c'è un altro proprietà aggiunta ai file di progetto:

<RestorePackages>true</RestorePackages> 

resta che rimuovere questo così come tutte queste righe manualmente da tutte le * Csproj file:

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

UPDATE:

venuto fuori è un po 'bastardo persistente, se si sta modificando manualmente i file di progetto, assicurarsi di chiudere la soluzione e cancellare tutte le linee da t egli proietta immediatamente, altrimenti sono solo aggiunti ancora una volta che le ricariche del progetto ...

UPDATE2:

eliminare la cartella .nuget dalla radice soluzione troppo

Update3:

Una versione successiva di NuGet aggiunge un'altra sezione che è necessario rimuovere:

<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

All'interno del NuGet.Targets si trova nella cartella .nuget, c'è un'altra sezione che viene aggiunto a nuovi progetti ... passare su false.

<!-- We need to ensure packages are restored prior to assembly resolve --> 
<BuildDependsOn Condition="$(RestorePackages) == 'false'"> 
    RestorePackages; 
    $(BuildDependsOn); 
</BuildDependsOn> 
+7

Ho trovato che c'è anche un '' alla fine del file .csproj che deve essere rimosso manualmente. – TimDog

+0

@TimDog che fa parte della domanda :) –

+6

HA! * torna indietro lentamente * :) – TimDog

0

Ho attivato accidentalmente "ripristinare pacchetto" di questa opzione durante l'apertura di mio progetto in VS2012 RC e ha iniziato a ricevere errori che sembravano qualcosa di simile:

"Errore 1 Impossibile trovare 'C: \ FolderX \ SomeProject. nuget \ nuget.exe '"

Per correggere l'errore ho seguito le istruzioni di cui sopra, aperto aprire ogni file di progetto nel blocco note e rimosso quella riga di RestorePackage.

-2

Mi sono imbattuto nello stesso identico problema e ho provato a rimuovere tutto.i tag nuget e RestorePackage dai file di progetto, ma un progetto non si ricaricherà, non importa quanto accuratamente l'ho esaminato per i tag .nuget e RestorePackages. Immagino ci siano dei riferimenti nascosti a questo da qualche parte.

Alla fine è stato più semplice copiare semplicemente i file e creare un nuovo progetto e importarlo nella soluzione.

48

Per disattivare Nuget pacchetto Restore:

  1. Elimina cartella .nuget
  2. Rimuovere specifiche linee da tutti i file Csproj

Lines per rimuovere:

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

Nota: Assicurati di fare tutte le modifiche in una volta sola prima di ricaricare la soluzione, altrimenti le aggiungerà di nuovo.

questo si basa sul seguente articolo: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

Inoltre, si potrebbe desiderare di controllare due volte che questa opzione è disabilitata: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

+0

grazie Andreas, questo è un sommario più compatto ... –

+0

Ho creato un problema per il team NuGet per risolvere questo problema. Per favore, vai a votare su https://nuget.codeplex.com/workitem/3756 – deadlydog

+1

Grazie, per me era solo disabbellire quell'opzione –

0

ero in grado di risolvere il problema prendendo questi passaggi :

1) assicurarsi di eseguire un backup di tutte le modifiche correnti dei file estratti.

2) eliminare fisicamente la cartella della soluzione da C: \ (percorso mappato a TFS).

3) ottenere più recenti da TFS per la soluzione.

4) copiare (se presente) le modifiche dal backup eseguito nel passaggio 1.

speranza che aiuti!

1

Ho avuto lo stesso problema. Cosa ho finito per fare: 1) vai in ogni file .csproj del progetto nella soluzione, aprilo nel blocco note e poi rimuovi la porzione di xml e salvata.

2) Quindi ho rimosso tutti i file package.config nell'intera soluzione.

3) Quindi ho dovuto rimuovere il .nuget e le cartelle del pacchetto.

A questo punto, ho avuto una soluzione completamente NuGet gratuita.

4) Quindi ho fatto riferimento manualmente a qualsiasi DLL necessaria e ho eseguito la compilazione e la soluzione funzionava come un campione senza che fossero necessari i pacchetti NuGet.

2

Ho seguito la soluzione accettata senza risultato utilizzando il 2012.Questo lavoro ha fatto, però,

  1. chiudere completamente l'VS
  2. Aggiornare il <RestorePackages>true</RestorePackages> per <RestorePackages>false</RestorePackages> e cancellare la linea <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
  3. ribattezzata anche la nuget.exe-nuget.exe.NotExe
5

soluzioni attualmente utilizzando il pacchetto MSBuild-Integrated il ripristino può essere migrato in Ripristino automatico dei pacchetti. Da quello che ho capito, questo dovrebbe aiutare coloro che stanno incontrando problemi di costruzione di CI. (Per favore correggimi se mi sbaglio).

Si prega di fare riferimento al documento sul sito NuGet: soluzioni Migrazione MSBuild-integrata per usare il pacchetto automatico di ripristinarle http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Ci sono informazioni lì per la conversione con e senza TFS.

David Ebbo anche pubblicato alcune informazioni a http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

1

Vai alla directory di soluzione in cui si dispone di [$(SolutionDir)\.nuget\nuget.targets] .nuget cartella e nuget.targets file con esso eliminare la cartella, e il cambiamento rimuovere le linee dal csproj per una volta l'ultima volta.

Il problema non tornerà più a infastidirti.

9

Non è questa impostazione qui?

Opzioni ... ->Nuget Package Manager ->[deselezionare] Lasciare Nuget per scaricare pacchetti mancanti

enter image description here

Sto usando Visual Studio Professional + ReSharper 8.2

+0

Ho eliminato la cartella dei pacchetti e cancellato la cache del pacchetto per risolvere il mio problema. Grazie! – Tresto

+1

No, non aggiorna i file .proj dopo - quindi il problema si ripresenta - ma buono anche qui :-) – schmoopy

+0

La finestra di output mostra questo mentre si costruisce: 'Ripristino dei pacchetti NuGet ... Per impedire a NuGet di ripristinare i pacchetti durante la compilazione, aprire la finestra di dialogo Opzioni di Visual Studio, fare clic sul nodo Gestione pacchetti e deselezionare 'Consenti a NuGet di scaricare i pacchetti mancanti durante la compilazione'. È solo una conferma che questa dovrebbe essere la strada da percorrere. –

3

NuGet ha un post sulla migrazione a pacchetto ripristino automatico: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

C'è un PowerShell sceneggiatura riferimento nel post sul blog che si prenderà cura di rimuovere automaticamente le linee necessarie (e ricorsivamente): https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1

Offrendo una Disabilita NuGet pacchetto op Restore L'istruzione direttamente è contrassegnata come Non risolvibile: https://nuget.codeplex.com/workitem/1883

-8

Nuget fa schifo. Basta rimuovere i nuget e rimuovere o commentare gli elementi del pacchetto da packages.config nella directory root dei progetti in cui questo è un problema. Utilizzare invece riferimenti diretti in una cartella di lib.

<?xml version="1.0" encoding="utf-8"?> 
    <packages> 
    <!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />--> 
    </packages> 
+0

E '"succhia", come qualsiasi altro prodotto, se non sai come usarlo e non fare uno sforzo per capirlo. –

+0

Questo è sicuro, ma nella mia opinione, non ti dà abbastanza controllo sul tuo progetto. Anche la GUI di Nuget richiede alcuni aggiornamenti seri. 1. La sua non è intuitiva, 2. E 'difficile da gestire il pacchetto 3. la sua difficile per spegnere il ripristino 4. Scaricare i pacchetti non necessari 5. A volte la sua non è in grado di ripristinare pacakges –

+0

Accetto in qualche misura, anche se penso che vada davvero senza avere nessun gestore di pacchetti. Sembra che stiano lavorando agli aggiornamenti seriali della GUI per nuget 3.0: http://blog.nuget.org/20141112/nuget-3.0-preview.html –

2

Per chiunque ancora bisogno di ripulire un progetto utilizzando ripristinare il vecchio pacchetto NuGet stile, lo strumento iFix disponibili here automatizza il processo.

basta eseguire il programma di installazione (IFix saranno aggiunti al PATH) e quindi eseguire il seguente:

IFix nugetrestore --fix 

È possibile eseguirlo in modalità di controllo prima di vedere ciò che pulirà:

IFix nugetrestore --check 
0

Rimuovere il file packages.config all'interno della soluzione.

Problemi correlati