2009-06-02 21 views
37

Ho un'applicazione console relativamente complessa che si basa su diverse DLL. Mi piacerebbe "spedirlo" nella forma migliore. Il mio modo preferito sarebbe un file exe con tutte le dipendenze incorporate in esso (non così grande, circa 800K). Un'altra cosa sarebbe semplicemente comprimere il contenuto della cartella "Debug" e renderlo disponibile, ma non sono sicuro che tutto sarà disponibile in questo modo (tutte le dipendenze verranno risolte semplicemente chiudendo la cartella di debug?)Metodi per distribuire applicazioni console in C#

Quali pratiche affidabili esistono per la distribuzione di app console scritte in C# utilizzando VisualStudio 2008?

+0

È sicuro presumere che sul computer di destinazione sia installato .NET? La versione giusta? ... Le librerie da cui dipendi potrebbero essere già presenti in GAC su quelle macchine? – jerryjvl

+0

@jerryjvl: Ho una gestione degli errori piuttosto estesa per l'ambiente. L'unica cosa che so per certo è che tutti gli utenti hanno .NET 3.5, che è la base per tutti gli altri test dell'ambiente. –

+0

Clickonce non è disponibile per le app della console? –

risposta

39

Se si copiano solo i file Foo.exe, dlls e Foo.exe.config, è probabile che vada bene. Dai un'occhiata a cos'altro c'è nella cartella di debug: tu (probabilmente) non vuoi spedire i file .pdb, o Foo.vshost.exe. C'è niente altro? Se hai elementi contrassegnati come Contenuti che vengono copiati nella cartella di output, avrai bisogno anche di quelli.

Si potrebbe utilizzare ilmerge per mettere tutte le dipendenze in un unico file exe, ma io sono un po 'diffidenti di questo approccio - mi piacerebbe restare con exe + dipendenza DLL.

+0

Se si sta per farlo, è consigliabile creare una configurazione di rilascio in modo da assicurarsi che i PDB non siano inclusi. – brien

+2

Che dire ... compilazione per la modalità di rilascio? –

+0

http://msdn.microsoft.com/en-us/library/wx0123s5.aspx È solo un modo di compilare senza i simboli debug e il file pdb. – brien

12

Si consiglia di esaminare setup projects in Visual Studio. Ti permettono di impostare le dipendenze e includere le DLL di cui hai bisogno. Il risultato finale è un setup.exe e un programma di installazione MSI.

Ecco uno walkthrough che dovrebbe aiutare.

+5

Un intero progetto di installazione per un'applicazione console? Non è un po 'eccessivo? –

+2

Non proprio, è possibile creare un progetto di installazione molto rapidamente che copia solo le DLL e gli exe necessari nel posto giusto sul computer client. – brien

+1

I pacchetti di Windows Installer semplificano l'automazione dell'installazione, delle patch e della rimozione.Altre soluzioni come EXE mi fanno sedere in ogni macchina e fare clic su cose. Se dipendesse da me, la mia azienda non comprerebbe mai una licenza per software pubblicato come qualcosa di diverso da un pacchetto di Windows Installer. –

0

Creare un progetto di installazione in VS08 e aggiungere l'uscita principale del progetto console app per esso, questo risolve le dipendenze e li confeziona in un msi

2

Oppure si potrebbe usare un file ZIP autoestraente. Imballa tutti i file normali - .exe, .dll, .config e qualsiasi altra cosa - in un file zip. Estrai in una directory temporanea e imposta il programma run-on-extract come exe della console.

Problemi correlati