Laden...

Klassen über DLL verteilen (C#)

Letzter Beitrag vor einem Jahr 3 Posts 551 Views
Klassen über DLL verteilen (C#)

Servus,

ich wollte in einem DLL Projekt meine Klassen erstellen, die ich in quasi jedem Projekt benötige, um sie dann zu "verteilen".
Dies habe ich auch soweit erledigt.

In den Projekten wo ich sie aufrufen möchte habe ich über einen Verweis die DLL "eingebunden". Wenn ich das Projekt über den Play Button im Visual Studio starte funktioniert es auch tadellos...
jedoch nicht wenn ich die Exe doppelklicke. Dann startet er das Projekt nicht (ohne Fehlermeldung).

Was ich versucht habe:

  • Die DLL zum exe Pfad zu schieben.
  • Projektmappen aktualisieren
    Beides leider ohne Erfolg...

Wisst ihr was ich falsch mache?

jedoch nicht wenn ich die Exe doppelklicke

Meine Glaskugel vermutet, dass Du die Exe-Datei genommen und irgendwo anders hin kopiert hast. Damit fehlt der Exe natürlich die DLL, denn die ist nicht in der Exe drin bzw weitere Abhängigkeiten, die die DLL benötigt.
Du musst alle Abhängigkeiten, die eine Exe-Datei zur Ausführung benötigt, mitliefern. Auch die Abhängigkeiten der Abhängigkeiten.

Was genau der Exe Datei fehlt siehst Du entweder im Event Log von Windows oder via Dependency Walker.

Um das Problem zu lösen bettet man entweder alle Abhängigkeiten in die Exe ein oder verwendet Installer.
Create a single file for application deployment - .NET

Eine DLL verteilen ist üblichen von Hand der falsche Weg. Im Endeffekt sieht .NET zwei Wege vor:

Das händische Verteilen von DLLs bringt in 99% Probleme mit (nicht nur in .NET), weswegen quasi jede Runtime eigene Paketmanager hat, die sowohl mit privaten wie auch mit öffentlichen Feeds funktionieren.

Sry falls ich nicht ausführlich genug war.

Danke für den Link, ich schaue es mir gleich mal an!