Entwickler-Ecke

C# - Die Sprache - Dateiverweis im Code erstellen?


csharpMorpheus - Do 07.01.10 11:52
Titel: Dateiverweis im Code erstellen?
Hi.

Ich arbeite mit Dateiverweisen.
Diese sind aber im Projekt unter "Verweise" einzutragen.

Kann ich im Code selber die Verweise dynamisch erstellen?
Bei jedem Kunden sind die Verweisdateien wo anders und der Pfad auf diese Dateien ändert sich somit des öfteren.
Ich möchte dann im Code einfach nur den Pfad ändern können bzw. ihn einfach direkt im code einbinden und nicht
in der Projektmappe an sich!

z.B.
System.Dateiverweis("../ISV/test.dll");

Ich hoffe das ist einigermaßen verständlich.

Danke!


JüTho - Do 07.01.10 12:06

Die "Verweise" im Projekt beziehen sich auf DLLs, die schon zum Kompilieren und dann beim Ausführen benötigt werden. Wenn sich die Pfade zwischen Entwicklungs- und Anwendungsrechner unterscheiden, gibt es mehrere Möglichkeiten:

1. Es sind sehr wichtige DLLs, die sich selten ändern. Dann können sie mit gacutil im GAC gespeichert werden und stehen ohne Pfadangabe immer zur Verfügung.

2. In allen anderen Fällen sollten sie in Reichweite des aktuellen Programms stehen. Das geht aber nur in Unterverzeichnissen der EXE, dazu kann die app.config erweitert werden:

XML-Daten
1:
<probing privatePath="paths"/>                    

Erläuterungen und Beispiel siehe SDK-Doku/MSDN/Hilfe unter probing-Element.

Es gibt dazwischen noch andere Möglichkeiten, die sind aber immer kompliziert und dadurch fehleranfällig.

Gruß Jürgen


csharpMorpheus - Do 07.01.10 13:04

Das Projekt befindet sich immer im ISV Ordner vom CRM.
Die DLL's sind auf jedem ClientPC im CRM Ordner enthalten.
Es ist immer der selbe Pfad!

Doch kann der Pfad des CRM sich ändern!
Also wäre ein Zugriff via "../DLL/test.dll" möglich, also nur einen Ordner zurück und in einen anderen Ordner.
Nicht aber den eig. Pfad "c:/..." angeben zu müssen.
Kann ich das nicht eigentlich als Verweis im Projektmanager so angeben?

Vielen Dank


csharpMorpheus - Do 07.01.10 14:20

Also wenn ich nun mit probing arbeite,
so kann ich z.B. mit meinem Programm zusammen im Unterordner (z.B. "DLL") meine dll's mitliefern
und mein Projekt schließt sämtliche in diesem Ordner vorhandenen DLL's in das Projekt als Verweis mit ein ?!

Somit bräuchte ich keine Verweise selber im Projekt tätigen.
Ich nehme die Einstellung in der web.config vor, da es sich um eine aspx.cs anwendung handelt.

Ist das so richtig?


Kha - Do 07.01.10 14:38

user profile iconcsharpMorpheus hat folgendes geschrieben Zum zitierten Posting springen:
Ist das so richtig?
Nein, es gibt einen Unterschied zwischen den Verweisen beim Kompilieren und dem Auffinden von Assemblies beim Ausführen. Bei Ersterem zählen nur die in der IDE angegebenen Pfade, bei Letzterem zählen diese überhaupt nicht, sondern es wird nach http://msdn.microsoft.com/de-de/library/yx7xezcf.aspx verfahren.

PS: Mit codeBase [http://msdn.microsoft.com/de-de/library/4191fzwb.aspx] kannst du auch auf übergeordnete Verzeichnisse verweisen.