Oppure

Loading
13/06/11 19:46
DexterELEL
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??

        public static CompilerResults Compila(CodeDomProvider provider, string percorso)
        {
            ICodeCompiler codecomp = provider.CreateCompiler();
            CompilerParameters param = new CompilerParameters(new string[] { "System.dll" }, percorso.Substring(0, percorso.LastIndexOf(".") + 1) + "exe", false);
            param.GenerateExecutable = true;
            CompilerResults result = codecomp.CompileAssemblyFromFile(param, percorso);
            return result;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Encoding encode = Encoding.GetEncoding(1252);
            FolderBrowserDialog folder = new FolderBrowserDialog();
            if (folder.ShowDialog() == DialogResult.OK)
            {
                string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";
                StreamWriter scrivi = new StreamWriter(percorso, false, encode);
                scrivi.WriteLine(textBox1.Text);
                scrivi.Close();
                CodeDomProvider provider = new CSharpCodeProvider();
                CompilerResults result = Compila(provider, percorso);
            }
Ultima modifica effettuata da DexterELEL 13/06/11 19:47
aaa
13/06/11 20:19
R0gerBlack
Si vede che il codice non è tuo ma l'hai preso da qualche parte..
Il tuo codice salva un file .cs

string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";
StreamWriter scrivi = new StreamWriter(percorso, false, encode);
scrivi.WriteLine(textBox1.Text);
scrivi.Close();
CodeDomProvider provider = new CSharpCodeProvider();
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:
aaa
14/06/11 7:29
DexterELEL
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

string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";
StreamWriter scrivi = new StreamWriter(percorso, false, encode);
scrivi.WriteLine(textBox1.Text);
scrivi.Close();
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

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...
aaa
14/06/11 9:47
Phil93
Con queste righe di codice usi uno StreamWriter per scrivere un file .cs, come fai a lamentarti che te lo crea? :-|
string percorso = folder.SelectedPath + @"\"+ textBox2.Text + ".cs";
StreamWriter scrivi = new StreamWriter(percorso, false, encode);
scrivi.WriteLine(textBox1.Text);
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.
aaa