Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C#] Inclusione Modulare di DLL

    Salve, dovrei fare un'applicazione che a seconda dei casi ha bisogno di quella o questa DLL.

    Facciamo conto che la mia applicazione sia Pippo.exe, ho inserito il riferimento a due DLL (DLL1 e DLL2).

    Dentro il main ho una switch, a seconda della chiamata istanzio un oggetto della DLL1 o DLL2.

    Se nella cartella di Pippo.exe metto DLL1.dll e chiamo Pippo.exe in modo da istanziare DLL1 va in errore perché non trova DLL2.dll, ma nel codice che esegue in base alla chiamata non viene mai chiamata DLL2.dll.

    Se commento in Pippo.exe la parte della switch dove chiamo DLL2 e ricompilo in questo caso non va più in errore (pur rimanendo il riferimento a DLL2 in Pippo.exe).

    Esiste un modo per non mandarlo in errore?

    Tnx

  2. #2
    Potresti postare il codice?

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Puoi usare la Reflection per recuperare le informazioni sui moduli DLL e caricare i moduli dinamicamente, quindi senza dover creare un riferimento diretto al progetto ma, ad esempio, solo per il semplice fatto che il file della DLL sia presente.
    Poi, ovviamente, potrai decidere se caricare o meno la DLL all'interno della tua applicazione in base a tutte le condizioni che vuoi tu le quali, logicamente, devono essere verificabili nei confronti della DLL stessa.

    Studiati bene la Reflection, perchè è molto potente.


  4. #4
    Mmmhhh, la reflection dici? Quando ho tempo me la studio, tnx!

    Per Dragon:
    codice:
    namespace PippoNS
    {
        class Pippo
        {
            static void Main(string[] args)
            {
                if (args.Length > 0)
                {
                    switch (args[0].ToUpper())
                    {
                        case "DLL1":
                            try
                            {
                                DLL1.OBJ_DLL1 prova = new DLL1.OBJ_DLL1();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                            }
                            break;
                        case "DLL2":
                            try
                            {
                                DLL2.OBJ_DLL2 prova = new DLL2.OBJ_DLL2();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                            }
                            break;
                    }
                }
            }
        }
    }

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Debiru
    Mmmhhh, la reflection dici? Quando ho tempo me la studio, tnx!
    Ti conviene trovarlo, il tempo...

    Intanto qui trovi un breve articolo:
    Windows Forms .NET - Gestione modulare applicazione
    http://community.visual-basic.it/luc...les/17236.aspx


    e da questo articolo ho sviluppato un progetto più complesso:
    Gestione moduli Plugin
    http://nuke.vbcorner.net/Progetti/VB...4/Default.aspx


  6. #6

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.