Come distribuire un'applicazione C#?

Discussione in 'Il tuo progetto' iniziata da RuggeriExtreme, 8 Luglio 2012.

  1. RuggeriExtreme

    RuggeriExtreme
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    10 Ottobre 2011
    Messaggi:
    367
    Mi Piace:
    16
    Salve sono nuovo nel settore e ho appena creato una morra cinese davvero stupida in C#, volevo sapere, una volta compilata e debuggata, che file devo distibuire con il download? tutta la cartella release che contiene un eseguibile e un file pb oppure solo l'eseguibile? grazie.
     
  2. Google Adsense
  3. Tyrion Lannister

    Tyrion Lannister
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    11 Maggio 2012
    Messaggi:
    350
    Mi Piace:
    107
    Prima di tutto devi impostare il modo di compilazione anzichè in "debug" ma in "release" e poi basta solo l'eseguibile con il nome che hai dato al tuo programma (niente svchost ecc.). Gli altri file non ti devono interessare.
     
  4. RuggeriExtreme

    RuggeriExtreme
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    10 Ottobre 2011
    Messaggi:
    367
    Mi Piace:
    16
  5. guardian2

    guardian2
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    12 Maggio 2010
    Messaggi:
    285
    Mi Piace:
    28
    Anche le dll che hai usato devi mettere nel download :)
     
  6. RuggeriExtreme

    RuggeriExtreme
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    10 Ottobre 2011
    Messaggi:
    367
    Mi Piace:
    16

    Dove le trovo?
     
  7. Tyrion Lannister

    Tyrion Lannister
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    11 Maggio 2012
    Messaggi:
    350
    Mi Piace:
    107
    Funzionare funziona ma è proprio un programma elementare! Comunque penso buono visto che da quanto ho letto negli altri post sei agli inizi.

    Mi sono permesso di analizzare il codice, visto che credevo, dato che sei agli inizi, ti potesse far piacere essere corretto in modo tale che tu potessi migliorare.
    Allora, hai fatto una cosa molto buona, ovvero hai adoperato lo switch anzichè 300 if. Però, secondo le mie conoscenze hai sbagliato qualcosina nella forma.

    Ho usato reflector quindi non so se il codice che ho letto rispecchi l'originale al 100%.

    Ho notato che anche all'interno dello stesso switch hai utilizzato ha volte break, altre return. In 2 swith oltretutto hai messo in fondo un'azione che avevi già messo prima dello switch stesso. Quindi puoi anche cancellarli perchè superflui.

    L'ultima cosa, ma non per importanza, rinomina tutti i controlli. Io dò tanto valore a questa cosa anche se alcuni sia per piccoli che per grandi programmi non li rinominano. Credo sia una questione di principio. L'ordine dà sempre buoni risultati :).

    Spero di averti chiarito qualche idea. Comunque hai fatto un buon lavoro.
    Quasi mi dimenticavo, la grafica fa pena! :asd:

    P.S: Per le dll non importa! Ovvero a questo punto del tuo percorso non ti devono interessare più di tanto. Quando comincierai a creare le tuo proprie dll allora dovrai allegarle all'eseguibile se questo vi fa riferimento. Per tutte le altre dll (intedo quello del framework) dovrebbero averle tutti i computer installate (o per lo meno quello che hanno il framework net).
     
    #6 Tyrion Lannister, 8 Luglio 2012
    Ultima modifica: 8 Luglio 2012
  8. RuggeriExtreme

    RuggeriExtreme
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    10 Ottobre 2011
    Messaggi:
    367
    Mi Piace:
    16
    Ovvio che non mi sono occupato della grafica :)
    Comunque guarda che non so cosa hai combinato con reflector XD ma il codice che mi hai detto tu non corrisponde al mio... o meglio, prima avevo utilizzato degli switch per verificare il true o false, ma poi ho realizzato che era totalmente inutile, infatti guarda il codice:
    Codice:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    
    namespace Morra_Cinese
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
    
            
            
    
    
            private void btnCarta_Click(object sender, EventArgs e)
            {
                Random r = new Random();
                int a = r.Next(1, 4);
                
                textBox1.Text = "Carta";
                if ( a == 1)
                {
                    textBox2.Text = "Carta";
                    MessageBox.Show("Tu: carta; PC: carta - Hai pareggiato!");
                }
                else if (a == 2)
                {
                    textBox2.Text = "Forbice";
                    MessageBox.Show("Tu: carta; PC: forbice - Hai perso!");
                }
                else if (a == 3)
                {
                    textBox2.Text = "Sasso";
                    MessageBox.Show("Tu: carta; PC: sasso - Hai vinto!");
                }
    
    
                
                
            }
    
    
            private void btnForbice_Click(object sender, EventArgs e)
            {
                Random r = new Random();
                int a = r.Next(1, 4);
    
    
                textBox1.Text = "Forbice";
                if (a == 1)
                {
                    textBox2.Text = "Carta";
                    MessageBox.Show("Tu: forbice; PC: carta - Hai vinto!");
                }
                else if (a == 2)
                {
                    textBox2.Text = "Forbice";
                    MessageBox.Show("Tu: forbice; PC: forbice - Hai pareggiato!");
                }
                else if (a == 3)
                {
                    textBox2.Text = "Sasso";
                    MessageBox.Show("Tu: forbice; PC: sasso - Hai perso!");
                }
                textBox1.Text = "Forbice";
            }
    
    
            private void btnSasso_Click(object sender, EventArgs e)
            {
                Random r = new Random();
                int a = r.Next(1, 4);
    
    
                textBox1.Text = "Sasso";
                if (a == 1)
                {
                    textBox2.Text = "Carta";
                    MessageBox.Show("Tu: sasso; PC: carta - Hai perso!");
                }
                else if (a == 2)
                {
                    textBox2.Text = "Forbice";
                    MessageBox.Show("Tu: sasso; PC: forbice - Hai vinto!");
                }
                else if (a == 3)
                {
                    textBox2.Text = "Sasso";
                    MessageBox.Show("Tu: sasso; PC: sasso - Hai pareggiato!");
                }
                textBox1.Text = "Sasso";
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
    
            }
    
    
            
        }
    }
    
    Come vedi ho solamente inserito un valore random per numero da 1 a 3 e ho messo in ogni pulsante:
    SE esce 1 significa carta e hai vinto o perso e cosi via..

    Avrei potuto benissimo inserire 3 switch per 3 pulsanti, ma il risultato è uguale..

    PS: Curiosità... il valore random l'ho dovuto ripetere perchè se lo dichiaravo fuori dalla classe mi dava un errore nel senso che nn potevo dichiararlo o_O

    PPS: Lo switch lo conosco molto bene e l'ho utilizzato quando ho realizzato di poter fare una calcolatrice in maniera facile, assegnando ad ogni operatore il proprio simbolo : esempio:
    pulsante +:
    theOperator = "+";
    pulsante -:
    theOperator = "-";


    così ad ogni click di pulsante, se per esempio cliccavo su +, la variabile mi diventa "+" e percio con lo switch 2+2 fa 4.
    lo switch l'ho applicato nel codice del pulsante uguale nel quale verificato i diversi casi:
    switch(theOperator)
    {
    case "+":
    //addiziono il primo totale con il secondo totale
    break;
    case "-":
    //sottraggo
    break;

    voila.
    //
     
    #7 RuggeriExtreme, 8 Luglio 2012
    Ultima modifica: 8 Luglio 2012
  9. .Eternal.Coding.

    .Eternal.Coding.
    Expand Collapse
    Utente Gold
    Utente Gold

    :
    19 Febbraio 2011
    Messaggi:
    4.268
    Mi Piace:
    436
    Se mi permetto aggiungo altre due cose al discorso di Tyrion :) nel bottone sasso e forbice hai scritto due vlte all'inziio e alla fine l'istruzione per settare il testo alla textbox 2 xD cosa che per la carta non hai fatto xD in questo caso è una distrazione quindi fa niente ;) e poi l'evento form_load è vuoto si puù anche cancellare :) niente errori anche se voglio rivolgere una domanda a Tyrion:
    Cosa cambia tra break e return?
     
  10. guardian2

    guardian2
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    12 Maggio 2010
    Messaggi:
    285
    Mi Piace:
    28
    Purtroppo non sono molto bravo a spiegare quindi ti faccio un copia e incolla :)
    Break
    L'istruzione break termina il ciclo di inclusione più vicino o l'istruzione switch in cui è contenuta.Il controllo viene passato all'istruzione che segue l'istruzione terminata, se presente.

    Return
    L'istruzione return termina l'esecuzione del metodo in cui è contenuta e restituisce il controllo al metodo di chiamata.Può anche restituire un valore facoltativo.Se il metodo è un tipo void, è possibile omettere l'istruzione return.Se l'istruzione return si trova in un blocco try, il blocco finally, se esistente, verrà eseguito prima che il controllo ritorni al metodo chiamante.
     
  11. Tyrion Lannister

    Tyrion Lannister
    Expand Collapse
    Utente Silver
    Utente Silver

    :
    11 Maggio 2012
    Messaggi:
    350
    Mi Piace:
    107
    Allora ok Ruggeri.

    Comunque per la dichiarazione del random dipende dove lo hai messo.
    Fuori dalla classe è ovvia che ti dà errore. Se invece lo metti all'interno della classe del form ma all'esterno di un metodo dovrebbe funzionarti.

    Esempio:
    Codice:
    public class Pippo
    {
    [INDENT]private Random r;
    private void Pluto()
    {
    [/INDENT]
    [INDENT=2]r = new Random ecc...[/INDENT]
    [INDENT] }
    
    private void Topolino()
    {
    [/INDENT]
    [INDENT=2]r = new Random ecc..[/INDENT]
    [INDENT] }
    [/INDENT]
     }
    
     
  12. Pester
Sto caricando...