none
Applicazione modulare e deploy con click once RRS feed

  • Domanda

  • Ciao a tutti, ho sviluppato una piccola applicazione composta da cinque moduli che vengono caricati tramite un catalogo (stile PRISM).

    Ovviamente l'assembly che fa da entry-point non ha alcun riferimento ai moduli caricati a runtime.

     

    La mia applicazione però vorrebbe essere click-once e nella lista dei "File Applicazione" non trovo i moduli aggiuntivi.

    La prima soluzione è stata quella di inserire i moduli come reference per l'applicazione e così me li trovo nella lista dei file da pubblicare... ma non trovo tutti gli assembly necessari ai singoli moduli per funzionare.

     

    Dubito che questa sia la strada da seguire (mettere tutti gli assembly come reference dell'applicazione principale); qual'è quindi la strada corretta?

     

    Grazie

    Mauro

    mercoledì 7 luglio 2010 08:36

Risposte

  • ClickOnce in questo scenario, lo stesso che ho io mannaggia, si chiama
    bagno di sangue... maledetti loro :-)
     
    Hai 2 strade, oltre a quella che hai scelto tu che ha tutta una serie
    di controindicazioni non indifferenti.
     
    a) impazzire, come ho fatto io, per riuscire ad usare direttamente i
    task di MS Build per invocare "mage.exe" che è il tool dell'sdk che
    produce l'output di clickonce... non puoi fare tutto quello che fai
    dalla UI di VS (mi spiegassero perchè) e soprattutto una volta che ho
    fatto l'upgrade della solution a VS 2010 si è sminchiato tutto e non ho
    più avuto voglia di riperdere giornate intere dietro alla paturnie di
    sta roba;
     
    b) più semplicemente io faccio così adesso:
    * ogni progetto ha una post build action che copia l'output della
    build in una folder comune a tutti i progetti, in questo modo al
    termine della build della solution ho una folder con dentro tutte le
    dll;
    * il progetto rappresenta l'applicazione ha una *pre* build action
    che copia quello che gli serve nella sua project-root
    * la prima volta devi ricordarti di:
    - impostare correttamente i project build order per far si che
    l'applicazione sia sempre l'ultimo ad essere buildato;
    - includere nel tuo progetto root le dll che hai copiato e
    impostarne la build action a "content" in questo modo click once ci
    casca come una pera cotta :-)
     
    Sembra difficile ma se ci ragioni su un po' è abbastanza naturale si
    tratta solo di automatizzare quello che faresti a manina e
    giochicchiare un po' con le post/pre-build action.
     
    ..m
     
     
     

    Mauro Servienti
    {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
    Microsoft MVP - Visual C# / MCTS
    http://mvp.support.microsoft.com
    blog @ http://milestone.topics.it
    whynot [ at ] topics [ dot ] it
    • Contrassegnato come risposta MauroDx venerdì 9 luglio 2010 13:39
    giovedì 8 luglio 2010 06:29