Laden...

Projektdateien in mehrere Verzeichnisse aufteilen

Erstellt von Jingo vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.128 Views
J
Jingo Themenstarter:in
5 Beiträge seit 2005
vor 18 Jahren
Projektdateien in mehrere Verzeichnisse aufteilen

Hallo zusammen,

habe ein Projekt mit einigen EXE und jede Menge DLL's.
Ich möchte nicht alle Dateien innerhalb eines Verzeichnisses ablegen, sondern
möchte folgende Struktur haben:
Die EXE-Dateien sollen in das Verzeichnis APP\BIN und die DLL-Dateien sollen in das Verzeichnis APP\LIB abgelegt werden.
Prinzipielles Problem ist, dass die DLL's zur Laufzeit gefunden werden müssen.

Ich habe mich bereits mit der Thematik beschäftigt und bin auf folgende Lösungen gestoßen:

  1. Application.config-Datei
    Problem: Leider können nur der Applikation untergeordnete Verzeichnisse angegeben werden. Außerdem ist diese Möglichkeit schlecht, weil ich pro Exe-Datei eine Application.config-Datei benötige.
    2.Der privatePath kann automatisch gesetzt werden:
    AppDomain.CurrentDomain.AppendPrivatePath("LIB");
    Problem (wie oben auch): Leider können nur der Applikation untergeordnete Verzeichnisse angegeben werden.
  2. Setzten des "Global Assembly Cache".
    Problem: Der "Global Assembly Cache" muss pro Maschine geetzt werden. Das ist schlecht wegen der Wartung beim Kunden.

Vielen Dank im voraus für eure Mitarbeit.

J
Jingo Themenstarter:in
5 Beiträge seit 2005
vor 18 Jahren

Zusätzlich ist mir noch aufgefallen das auch mit dem Setzen der Umgebungsvariablen die DLL's nicht gefunden werden können.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Jingo,

DLLs werden nicht über die Umgebungsvariable LIB sondern PATH gesucht.

herbivore

J
Jingo Themenstarter:in
5 Beiträge seit 2005
vor 18 Jahren

Hallo herbivore,

ich weiß daß die Umgebungsvariable über "Path" und nicht über "Lib" gesetzt wird.
Trotzdem funktioniert es nicht.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Jingo,

gut! Setzt du die Variable auch systemweit? Also unter Systemsteuerung/System/Erweitert/Umgebungsvariablen?

herbivore

J
Jingo Themenstarter:in
5 Beiträge seit 2005
vor 18 Jahren

Ja klar, die Varialbe wird systemweit gesetzt.
Ich setze die Umgebungsvariable über die API-Funktion "SetEnvironmentVariable":

//Deklaration

[DllImport("Kernel32.dll")]

public static extern int SetEnvironmentVariable(string name , string value ) ;

//Aufruf zum Testen
string s = Environment.GetEnvironmentVariable("path");
s += @";o:\ap\lib";

Leider funktioniert es nicht.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Jingo,

soweit ich weiß, wird durch SetEnvironmentVariable nur der momentane Prozess beeinflusst. Ich denke du solltest es zumindest mal probieren, es über die Systemsteuerung zu setzen.

herbivore

J
Jingo Themenstarter:in
5 Beiträge seit 2005
vor 18 Jahren

Das ist richtig, über SetEnviromentVariable wird die Umgebungsvariable nur für den Prozess gesetzt. Nachdem der Prozess beendet wurde wird die Umgebungsvariable automatisch zurückgesetzt.

Ich habe es jetzt mal über die Systemsteuerung probiert. Auch dies ist gescheitert.