Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Generare Exe Da Codice TextBox
Forum - C# / VB.NET - [C#] Generare Exe Da Codice TextBox

Avatar
DexterELEL (Normal User)
Pro


Messaggi: 67
Iscritto: 05/01/2011

Segnala al moderatore
Postato alle 21:46
Lunedì, 13/06/2011
Ragazzi sto creando un compilatore in C#... vorrei un bottone per generare solo l'exe senza il source .cs... ecco cosa ho fatto ma mi genera il file .cs

Potete Aiutarmi??

Codice sorgente - presumibilmente C#

  1. public static CompilerResults Compila(CodeDomProvider provider, string percorso)
  2.         {
  3.             ICodeCompiler codecomp = provider.CreateCompiler();
  4.             CompilerParameters param = new CompilerParameters(new string[] { "System.dll" }, percorso.Substring(0, percorso.LastIndexOf(".") + 1) + "exe", false);
  5.             param.GenerateExecutable = true;
  6.             CompilerResults result = codecomp.CompileAssemblyFromFile(param, percorso);
  7.             return result;
  8.         }
  9.  
  10.         private void button1_Click(object sender, EventArgs e)
  11.         {
  12.             Encoding encode = Encoding.GetEncoding(1252);
  13.             FolderBrowserDialog folder = new FolderBrowserDialog();
  14.             if (folder.ShowDialog() == DialogResult.OK)
  15.             {
  16.                 string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";
  17.                 StreamWriter scrivi = new StreamWriter(percorso, false, encode);
  18.                 scrivi.WriteLine(textBox1.Text);
  19.                 scrivi.Close();
  20.                 CodeDomProvider provider = new CSharpCodeProvider();
  21.                 CompilerResults result = Compila(provider, percorso);
  22.             }


Ultima modifica effettuata da DexterELEL il 13/06/2011 alle 21:47
PM
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:19
Lunedì, 13/06/2011
Si vede che il codice non è tuo ma l'hai preso da qualche parte..
Il tuo codice salva un file .cs

Codice sorgente - presumibilmente C#

  1. string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";
  2. StreamWriter scrivi = new StreamWriter(percorso, false, encode);
  3. scrivi.WriteLine(textBox1.Text);
  4. scrivi.Close();
  5. CodeDomProvider provider = new CSharpCodeProvider();
  6. CompilerResults result = Compila(provider, percorso);



string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";

Sono stupido io o basta che elimini le righe che salvano il file .cs?

:_doubt:


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM
Avatar
DexterELEL (Normal User)
Pro


Messaggi: 67
Iscritto: 05/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 9:29
Martedì, 14/06/2011
Testo quotato

Postato originariamente da R0gerBlack:

Si vede che il codice non è tuo ma l'hai preso da qualche parte..
Il tuo codice salva un file .cs

Codice sorgente - presumibilmente C#

  1. string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";
  2. StreamWriter scrivi = new StreamWriter(percorso, false, encode);
  3. scrivi.WriteLine(textBox1.Text);
  4. scrivi.Close();
  5. CodeDomProvider provider = new CSharpCodeProvider();



string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";

Sono stupido io o basta che elimini le righe che salvano il file .cs?

:_doubt:



Forse sei stupido tu... ma non hai visto che quella è una stringa?? e che è utilizzata qui

Codice sorgente - presumibilmente Plain Text

  1. CompilerResults result = Compila(provider, percorso);



Come pensi di sostituire?? con floder.SelectedPath ?? non funziona il programma va in errore e dice che è impossibile accedere alla directory...

PM
Avatar
Phil93 (Normal User)
Pro


Messaggi: 85
Iscritto: 26/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 11:47
Martedì, 14/06/2011
Con queste righe di codice usi uno StreamWriter per scrivere un file .cs, come fai a lamentarti che te lo crea? :-|
Codice sorgente - presumibilmente C# / VB.NET

  1. string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";
  2. StreamWriter scrivi = new StreamWriter(percorso, false, encode);
  3. scrivi.WriteLine(textBox1.Text);
  4. scrivi.Close();



Ad ogni modo, se vuoi creare l'assembly senza scrivere il .cs, invece di usare il metodo CompileAssemblyFromFile, che ovviamente richiede un file da cui estrarre il sorgente, usa il metodo CompileAssemblyFromSource sempre dell'interfaccia ICodeCompiler. Mi sembra ovvio che la funzione vada un po' modificata per accettare sorgente di tipo string e non un percorso.

ho riscritto facendo così string source = textBox1.Text; CompilerResults result = Compila(provider, source); ma niente - DexterELEL - 14/06/11 17:09
Hai modificato opportunamente la funzione Compila? Che errore ti da? - Phil93 - 15/06/11 13:45
Nessuno... ma non compila... - DexterELEL - 16/06/11 19:19
Intendo gli errori di compilazione del sorgente forniti dall'oggetto CompilerResults, non quelli di VS. - Phil93 - 19/06/11 11:44
va bhe grazie a tutti ho risolto eliminando il file... dopo compilato - DexterELEL - 21/06/11 20:34
PM