2010-03-17 13 views
7

Nelle proprietà del progetto di Visual Studio 2008, scheda Applicazione, è possibile impostare il tipo di output su Applicazione Windows, Applicazione console o Libreria di classi. Ho un progetto che voglio costruire come strumento stand-alone (app per console) e disponibile per un paio di altri strumenti su cui sto lavorando come libreria di classi.Progetto Visual Studio come eseguibile AND a DLL

La GUI VS mi consente solo di scegliere l'uno o l'altro, e costruire il proj due volte tutto il tempo è scomodo.

Come posso configurarlo per creare entrambi i tipi di output in un singolo lavoro di compilazione? Scrivo qualche file MSBuild .targets personalizzato o cosa?

+0

Problema correlato La priorità più bassa è testare il mio strumento; se uso i test di unità di creazione di Visual Studio per generare un progetto di test, risulterà * leggermente * diverso a seconda che il progetto principale sia stato impostato su Console App o Class Lib al momento, in modo che il progetto principale venga ripristinato e avanti interromperà alternativamente la costruzione del proj del test. Noioso. –

risposta

18

Se non sbaglio, è possibile utilizzare l'EXE come libreria di classi.
Basta aggiungere un riferimento ad esso, negli altri progetti. Un EXE .NET è solo un assemblaggio.

3

Creare due progetti separati, uno per l'app della console e uno per la libreria di classi. Impostare il tipo di output appropriato per ciascuno.

Non dimenticare di aggiungere un riferimento alla libreria di classi al progetto dell'app della console.

3

Non è possibile compilare sia exe che dll. Se un assembly viene trattato come exe o dll è determinato da un flag a bit singolo nell'intestazione eseguibile portatile del file (per ulteriori informazioni, vedere http://msdn.microsoft.com/en-us/magazine/cc301805.aspx). Questo flag non può avere entrambi i valori.

Quello che puoi fare per soddisfare il tuo bisogno è di aggiungere un riferimento al tuo exe. Non è possibile farlo in alcune versioni di Visual Studio (2005 e versioni precedenti) poiché l'interfaccia utente non ti consente di modificarlo, ma puoi modificare manualmente il file di progetto per aggiungere il riferimento. Le versioni successive di Visual Studio ti consentono di aggiungere riferimenti ai file exe utilizzando l'interfaccia utente.

+1

Quel bit flag significa che un singolo * file * non può essere sia una DLL che un file .exe, questo è ovvio. Ma una build .NET non può avere più di un obiettivo di build? Mi sembra strano, e se fosse vero sarebbe un enorme limite di MSBuild (quindi forse avrei bisogno di imparare NAnt ...) –

4

È possibile creare la dll per impostazione predefinita e creare un'altra destinazione dipendente che sia semplicemente un'app della console wrapper che utilizza la dll.

3

Penso che la soluzione più semplice sia quella di creare un file EXE e quindi avere un'azione di post-generazione che copia l'EXE in una DLL. Non c'è una vera differenza tra i due in. Net.

Problemi correlati