Come distribuire un'applicazione C#?

Stato
Discussione chiusa ad ulteriori risposte.

RuggeriExtreme

Utente Gold
10 Ottobre 2011
332
101
16
260
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.
 
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.
 
Ultima modifica:
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).
 
Ultima modifica:
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).

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.
//
 
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?
 
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.
 
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]
 }
 
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]
 }

ok :rockomg:
 
Stato
Discussione chiusa ad ulteriori risposte.