risposta

19

Non proprio. Dovreste fare uno dei seguenti modi:

  • Fai uno script di build che costruisce le soluzioni nell'ordine corretto.
  • Soluzione pre-compilazione A e solo riferimento alle uscite binarie create da esso nella soluzione B.
  • Creare una terza soluzione contenente tutti i progetti da entrambe le soluzioni.

I primi due elementi sono i più comuni, dove personalmente preferisco il secondo.

+2

* sigh * ... OK; Grazie! –

+0

Ma vedi la risposta da net_prog –

+0

Sembra che questo [in realtà] (https://stackoverflow.com/a/826009/712526) [era possibile] (https://msdn.microsoft.com/en-us/library /ee817674.aspx) nel 2009. In ogni caso, spero che sia migliorato nel 2015. – jpaugh

0

Una soluzione è una raccolta di assiemi creati per creare una sorta di eseguibile o dll. Avere una soluzione dipende da un'altra non ha senso. L'assembly di output (eseguibile/dll) dipende dagli assiemi a cui fa riferimento. Se la soluzione dipende da altri assembly, quindi fare riferimento a loro. Puoi aggiungere progetti alla tua soluzione (File> Aggiungi> Progetto esistente) e quindi puoi aggiungere questi progetti al tuo progetto di output.

1

Non puoi farlo. E perché vorresti?

Basta aggiungere tutti i progetti da cui si dipende (i progetti nell'altra soluzione) alla soluzione.

Quindi utilizzare i riferimenti del progetto (non i riferimenti ai file) tra i progetti.

+3

Voglio dipendere da un'altra soluzione per la quale non ho il controllo. Se tale soluzione viene aggiornata per includere un altro progetto, voglio che venga automaticamente preso in considerazione. –

+1

In tal caso: o Crea uno script che genera automaticamente il file della soluzione. Oppure aggiungi manualmente progetti alla tua soluzione e crea uno script che convalida che tutti i progetti sono nella soluzione. I file di soluzione sono semplici file di testo con una struttura abbastanza semplice. – codeape

+0

Si vorrebbe se l'albero delle dipendenze fosse profondo e complesso, sebbene un meccanismo esterno a VS che assicuri che le DLL dipendenti siano aggiornate e nella posizione corretta risparmierà molto tempo di compilazione se queste DLL sono disponibili in un repository controllato centralmente . –

11

Questo post è vecchio, ma in questi giorni è possibile riutilizzare facilmente le dipendenze in altre soluzioni creando pacchetti di nuget per tutti. VS 2015 ha incorporato il pacchetto nuget ma è attualmente un candidato alla versione. In Visual Studio 2013 è possibile utilizzare il pacchetto nuget di Nuget.Packaging per consentire la creazione del progetto come pacchetto Nuget.

Quindi è possibile pubblicare nuove versioni dei pacchetti su una condivisione di rete locale e configurarlo come repository in Visual Studio.

Quindi i progetti della vostra altra soluzione possono dipendere da quel pacchetto.

Ad esempio, si supponga di disporre di una DLL di utilità riutilizzabile in una soluzione denominata "Core Framework" e si desidera utilizzare un'utilità in là su un sito Web che si sta creando in una soluzione denominata "XYZEcosystem".

Nella soluzione CoreFramework si crea un pacchetto nuget per il progetto di utilità che viene compilato con la DLL di utilità e include la DLL e il file pdb nel pacchetto.

Quindi lo si pubblica sulla condivisione di rete.

Quindi supponiamo che il pacchetto abbia un ID come "XYZ.Core.Utilities" con una versione 1.0.0.0.

Ora in XYZEcosystem si utilizzerà la console del gestore pacchetti, si imposta il deposito a discesa nel repository e si digita "Install-Package XYZ.Core.Utilities" e verrà installata l'ultima versione di XYZ.Core.Utilities.

Se si apporta una modifica a XYZ.Core.Utilities è possibile eseguire il pacchetto di aggiornamento XYZ.Core.Utilities su XYZEcosystem e verrà prelevata la nuova versione.

Problemi correlati