2009-08-08 11 views
9

È possibile distribuire un'applicazione .NET 2.0 come eseguibile portatile? In modo che il mio programma possa essere eseguito su un Flash Disk senza .NET Framework 2.0 installato nel computer di destinazione. O forse è possibile distribuire il mio programma con le DLL .NET richieste, in modo che non sia necessaria l'installazione di un framework?Distribuzione dell'applicazione C# (.NET 2.0) come applicazione portatile?

So che esistono alcuni strumenti alternativi per trasformare .NET exe in un singolo eseguibile nativo come RemoteSoft Salamander, Xenocode Postbuild e Thinstall, ma sfortunatamente non posso permettermelo.

Ho anche cercato di incorporare le dipendenze con mkbundle di Mono, ma incasinato il mio programma su = \ (nessuno stile visivo XP, ha rotto alcuni controlli e la sua funzionalità)

Qualsiasi tipo di aiuto sarebbe apprezzato :)

Grazie.

fyi: il mio IDE è Microsoft Visual C# 2008 Express Edition con .NET Framework 2.0 come framework di destinazione.

risposta

9

Beh, a parte le cose come Salamander e Thinstall (ora VMware ThinApp) che avrebbe dovuto aver installato .NET se vuoi davvero eseguire .NET.

È possibile possibile eseguire Mono senza installarlo effettivamente (collegamento non statico del programma, ma incluso Mono sull'unità flash). Sospetto che sarebbe complicato, dato che dovresti dire al runtime di cose come la posizione GAC.

Non riesco a vedere nulla nelle FAQ Mono su questo argomento, ma potresti voler eseguire il ping su una mailing list Mono - sembra una cosa potenzialmente interessante e utile da poter fare.

8

No; hai bisogno sia del framework installato, sia degli strumenti come hai menzionato.

È potrebbe potenzialmente un'occhiata a nuovo linker statico del mono, ma che è su di esso ...

1

Bene Thinstall è molto costoso e non funziona in tutte le situazioni. Se vuoi eseguire la tua app senza .Net installato potresti incontrare dei problemi, anche se ci sono strumenti che lo fanno Xenocode has a tool che possono farlo per te ed è più economico di thinstall.

Ma se chiedete la mia opinione è una cattiva idea usarli. Meglio convincere il tuo mercato di destinazione a installare .Net 2 (che è praticamente universale in questi giorni), e quindi impacchettare tutti i tuoi file di libreria in un unico file usando uno strumento più economico di Obfuscator (Ce n'è uno buono da Smartassembly.)

Ho usato Thinstall per molto tempo e ho lavorato molto su questa tecnologia, quindi non sto girando senza esperienza.

1

Non ho provato io stesso, ma ecco la procedura:

  • fare un progetto C#.
  • In Esplora soluzioni, all'interno del progetto, è presente una riga "Riferimento". Fai clic sul segno più vicino. Ora puoi vedere tutte le dipendenze del tuo progetto. Elimina tutti i riferimenti che non vengono utilizzati (elimina e prova a eseguire/compilare. Se è possibile farlo, non è utilizzato. Se c'è un errore, restituiscilo aggiungendolo (clic destro del mouse, "Aggiungi riferimento ")).
  • Per ogni riferimento, andare su Proprietà e nella proprietà "Copia locale" selezionare "Vero". Per ogni immagine, l'icona ... si conforma al riferimento.
  • Ricostruisci il tuo progetto. Ora nella cartella Build/Release (all'interno del cestino) vedrai molti file dll. Quei file hanno le informazioni di ogni risorsa.
  • Copia tutti i file nella cartella (dal passaggio numero 4) in una nuova cartella.
  • Passare alla cartella: "\ Microsoft.Net \ Framework \" e copiare il file "mscrolib.dll" nella nuova cartella dal passaggio 5. Se non si trova questo file, è sempre possibile effettuare una ricerca in il disco rigido che contiene la cartella di Windows.
  • Ora la tua app è portatile (con l'intero contenuto della cartella).

- Fonte: http://www.codeproject.com/Tips/392308/Csharp-Portable-Exe-File

+0

fa questo lavoro? – Andreas

Problemi correlati