Ecco il problema: dobbiamo dire sia a NuGet che a TFS di ignorare i pacchetti, perché NuGet sta provando a fare cose relative al controllo del codice sorgente che assolutamente non dovrebbe fare (cattiva forma, Microsoft!). Quindi devi fare due cose.
Innanzitutto, aggiungi un file denominato .tfignore
nella cartella della soluzione (nota la mancanza di s
dopo il tf
). Il suo contenuto dovrebbe essere il seguente:
\packages
Ciò dice a TFS di ignorare la cartella dei pacchetti. Ora lo faresti penseresti che questo ignorerebbe anche il repositories.config
file. Ma non lo farà. Perché? Chissà, i modi di Microsoft sono strani e misteriosi. In realtà, penso che faccia parte delle cose NuGet che espongo di seguito, ma se ciò verrà risolto in futuro e si desidera conservare il repositories.config
file invece di consentire a VS di rigenerarlo, si dovrebbe essere in grado di utilizzare questo:
\packages
!\packages\repositories.config
OK, quindi ora grazie al nostro .tfignore
file, TFS sta ignorando i tuoi pacchetti. Va tutto bene, vero? SBAGLIATO , perché NuGet si sta dando da fare con il controllo del codice sorgente e aggiungendo i pacchetti alle modifiche in sospeso. Quindi ora diciamo a NuGet di tagliarlo già.
Creare una cartella chiamata .nuget
nella cartella principale della cartella della soluzione. 1 Ora, crea un file chiamato NuGet.config
e inseriscilo in questa nuova cartella 2 . Il suo contenuto dovrebbe apparire così:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
E ora i tuoi pacchetti dovrebbero rimanere fuori dal controllo del codice sorgente. Ricorda solo di aggiungere i file NuGet.config
e .tfignore
al controllo del codice sorgente in modo da non perderli mai.
MODIFICA: In caso di problemi, è possibile che si desideri eliminare la cartella dei pacchetti, verificare quella modifica e quindi seguire i passaggi precedenti.
MODIFICA ANCHE: Sembra che questo non accadrà con le versioni più recenti di Nuget. Quindi forse se passi a VS / TFS 2017 questo problema si risolverà senza saltare attraverso i cerchi sopra.
1 . Aggiungi la cartella usando Explorer controllo sorgente; fare clic con il tasto destro del mouse sulla soluzione-> Aggiungi cartella ->. nuget
2 . Quando l'ho capito usando VS 2013, ho scoperto che NuGet.config doveva andare nella cartella .nuget. Anche se hai già un file NuGet.config nella radice della cartella della tua soluzione (perché, ad esempio, la tua azienda ha un feed nuget interno). Tuttavia, alcuni nei commenti hanno indicato che funziona bene nella radice della soluzione in VS 2015. Personalmente, sono passato all'utilizzo di TFS in modalità git, quindi non posso testare. Inoltre, se disponi di un feed personalizzato, assicurati di avere sia il feed personalizzato che nuget.org come chiavi nel file Nuget.config, oppure a volte TFS deciderà casualmente che non è possibile ripristinare i pacchetti.