Einzelne Klassen (Namespaces) in .dll

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Mandy.

    Einzelne Klassen (Namespaces) in .dll

    Hallo Leute,

    gibt es die Möglichkeit, in einem normalen Projekt (Konsolenanwendung)
    beim kompilieren aus bestimmten einzelnen Klassen oder auch Namespaces
    sofort eine unabhängige .dll zu erstellen?

    Hintergrund der Idee:
    Ich habe eine Anwendung, in der entwickelt / getestet wird.
    Im Echtbetrieb läuft eine Anwendung als Service.

    So bräuchte ich nach der Freigabe nur die .dll verteilen.

    Vielen Dank für eure Hinweise,
    Mandy
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:

    Mandy schrieb:

    in einem normalen Projekt (Konsolenanwendung)
    Eine Konsolenanwendung ist kein normales Projekt.
    Da wirdt Du recht große Schwierigkeiten bekommen, eine Assembly-DLL einzubinden.
    DLLs machst Du Dir in einer WinForm-Anwendung, testen musst Du sie unter Einsatzbedingungen.
    Zum Service kannst Du Dir eine WinForm-Anwendung generieren, der dessen Test gestattet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Rod,

    was ist an einer Konsolenanwendung nicht normal?
    Und warum sollte ich da Schwierigkeiten mit .dll's bekommen?

    Danke,
    Manfred
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:
    Eine Console-Anwendung geht spagetti-mäßig geradeaus durch, die hat keine MessaheLoop und sie kann nicht auf Interrupte / Events reagieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ach so meinste.
    Stimme ich dir allerdings nicht wirklich zu:
    z.B. Verzeichnisse überwachen, auf Zustandsänderungen von Datenbanken oder Webservices zu achten zähle ich durchaus zu Ereignissen
    Anstatt der Messageloop habe ich per Timer verschiedene Tasks, die regelmäßig aufgerufen werden.
    Also nix mit Spaghetti...

    Meine Frage ist allerdings noch nicht beantwortet...
    Hast du eine Idee zu den .dll's?
    Und warum meinst dass ich Probleme bekomme?
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:

    VB.NET-Quellcode

    1. Private Sub OnTimerElapsed(ByVal Sender As Object, ByVal e As ElapsedEventArgs)
    2. Timer.Stop()
    3. StarteTasks()
    4. Timer.Start()
    5. End Sub


    VB.NET-Quellcode

    1. timer = New System.Timers.Timer(1 * 1000) ' Timer im Sekundentakt starten
    2. timer.AutoReset = True
    3. AddHandler timer.Elapsed, AddressOf OnTimerElapsed
    4. If (log.IsDebugEnabled) Then
    5. For Each task As IIceTask In taskListe
    6. log.Debug("Initialisiert Task: " & task.GetType().FullName)
    7. Next
    8. End If


    FileSystemWatcher verwende ich nicht, ich hinterlasse die Verzeichnisse immer leer,
    deshalb kann ich einfach schauen ob files vorhanden sind.

    Das gibt aber jetzt ein Hilfreich, oder 8-)
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:
    Was macht denn die Console-Hauptanwendung derweil?
    Emuliert die eine MessageLoop?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn du so willst, ja.

    VB.NET-Quellcode

    1. Sub Main()
    2. ....
    3. Console.ReadLine()
    4. End Sub
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:
    Also: Ein Dienst hat mir mehr Ähnlichkeiten mit einer Form-Anwendung denn mit einer Console.
    Ich würde das DLL-Zeugs in einer WinForm-Applikation machen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wo siehst du da Ähnlichkeiten?
    Beide haben keine Benutzer-Interaktion
    Ohne Benutzer auch keine WinForms

    Warum willst du unbedingt darauf hinaus?
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:

    Mandy schrieb:

    Warum willst du unbedingt darauf hinaus?

    RFG mag keine Konsolenanwendungen ...

    Zu deiner Frage:
    Nein, bzw ja!

    Du erstellst nicht ein PROJEKT, sondern eine SOLUTION. Diese wiederum enthält dann mehrere Projekte. Einmal das "Hauptprogramm" und dann halt Projekte vom Typ Klassenbibliothek (aka dll). In die DLL-Projekte packst du halt alles, was unabhängig vom Hauptprogramm änderbar sein soll.

    picoflop schrieb:

    RFG mag keine Konsolenanwendungen ...

    Is aber sein Problem.


    picoflop schrieb:

    Du erstellst nicht ein PROJEKT, sondern eine SOLUTION. Diese wiederum enthält dann mehrere Projekte. Einmal das "Hauptprogramm" und dann halt Projekte vom Typ Klassenbibliothek (aka dll). In die DLL-Projekte packst du halt alles, was unabhängig vom Hauptprogramm änderbar sein soll.

    Ok, ich dachte das geht vielleicht einfacher, und ich hätte es nicht gefunden.

    Vielen Dank,
    PicoFlop
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:
    Was hältst du davon:

    VB.NET-Quellcode

    1. Public Class TaskMailimport
    2. Implements IIceTask
    3. Assembly MeineAssembly.dll
    4. ...


    Wobei es wahrscheinlich über ganze Namespaces mehr Sinn machen würde, als nur einzelne Klassen in .dll's zu verpacken.


    Aber ernsthaft:
    NAnt ist mein Freund. :thumbsup:
    Damit kann man mehrere Librarys aus einem Projekt erstellen.
    Wenn du mich schon mit einem Hinweis auf Google IxQuick abspeisen willst...
    So schreib mir doch wenigstens die Suchbegriffe dazu :thumbup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mandy“ () aus folgendem Grund: Lösung gefunden