2015-09-09 11 views
11

Sto lavorando a un progetto C# utilizzando Visual Studio 2015, con NuGet per la gestione dei pacchetti. Per un riferimento, mi piacerebbe utilizzare temporaneamente una build locale mentre sto iterando su una correzione, piuttosto che la versione rilasciata. Qual è il modo migliore per realizzare questo?Come sostituire temporaneamente un riferimento NuGet con una build locale

Se si stesse utilizzando un SVN esterno, rilasciare le nuove copie create localmente nella cartella del riferimento esterno e impostarle. Altri software di gestione dei pacchetti (come CocoaPods) mi consentono di puntare a una directory locale per risolvere il riferimento. Con NuGet, non sembra che ci sia un meccanismo per questo.

Quando provo a rilasciare la mia nuova DLL sul riferimento del pacchetto all'interno della cartella packages, ottengo comportamenti incoerenti in Visual Studio. La mia build fallirà con centinaia di errori, la maggior parte dei quali si allontanano rapidamente dall'Elenco errori. Alla fine mi viene lasciato un avvertimento che mi dice che non è stato possibile risolvere il riferimento all'assembly che sto tentando di sostituire (anche se le proprietà del riferimento indicano che sta trovando la mia nuova versione).

+0

Questo suona come un [XY-Problema] (http://meta.stackexchange.com/questions/66377/what-is-the-xy -problema) - Perché vuoi raggiungere questo? –

+0

Sto provando a testare codice libreria incompleto nella mia app che lo consuma. Dal momento che è incompiuto, non sono ancora pronto a impegnarmi e pubblicare le mie modifiche. – Dov

+0

Sapete, che dopo SemVer e avere un repository locale in parte risolve il problema ... Qual è il problema con il commit di pacchetti beta? Però, capisco l'overhead aggiuntivo (che sto affrontando anch'io ...) –

risposta

4

È possibile creare il proprio feed Nuget (semplice cartella locale + alcune configurazioni)

Leggi tutto qui Hosting Your Own NuGet Feeds

+1

Esiste un modo per passare all'origine del pacchetto della cartella locale diverso dalla disinstallazione da quella precedente e quindi dalla reinstallazione? Non è così semplice, poiché nella soluzione su cui sto lavorando ci sono 20 progetti, di cui solo 5 utilizzano la libreria. Non è insormontabile, ma fastidioso. – Dov

7

ho trovato la seguente soluzione utile per me:

prima cosa disattivare "NuGet pacchetto Ripristina "dal menu di scelta rapida della soluzione.

Successivamente, vado nella cartella dei pacchetti e cerco il pacchetto che voglio sostituire. Da questo pacchetto prendo il numero di versione e uso questo numero esatto di versione per compilare la DLL che voglio scambiare.

Dopodiché posso scambiare la DLL nella cartella dei pacchetti con questa dll di recente creazione. La costruzione del progetto ora utilizza questa nuova DLL.

Dopo aver configurato questa volta, posso facilmente creare nuove DLL e copiarle nella cartella dei pacchetti.

+2

disabilitare "NuGet Package Restore" non è necessario –

+0

Questa è una soluzione eccezionale. Ha funzionato per me! – Dan

+0

Viene visualizzato un errore quando provo questo: "Assembly {assembly path} deve essere firmato per essere contrassegnato come prerequisito." –

Problemi correlati