2008-12-11 11 views

Antwort

5

Ist dies ein Konfigurationseintrag, Sie sind lesen, oder ist .NET lesen es? Wenn Sie es selbst lesen, können Sie die entsprechende Ersetzung selbst vornehmen (unter Verwendung von Environment.ExpandEnvironmentVariables, um das Los zu tun oder Environment.GetEnvironmentVariable, wenn Sie selektiver sein wollen).

Wenn es eins ist, das .NET lesen wird, weiß ich keine Möglichkeit, es Umgebungsvariablen zu erweitern. Ist die Konfigurationsdatei unter Ihrer Kontrolle? Könntest du es einfach umschreiben?

In der Tat, auch wenn Sie die Substitution tun können, ist das wirklich, was Sie tun möchten? Wenn Sie den vollständigen Pfad zu einer DLL angeben müssen, vermute ich, Sie müssen es finden über die DLLPATH (Überprüfung auf seine Anwesenheit in jedem Teil des Pfades) und dann ersetzen% DLLPATH% \ Foo.dll mit der vollständiger Pfad zu Foo.dll.

+0

Danke Jon. Ich bin mir nicht sicher, ob ich mich genau an das Problem erinnere, aber soweit ich mich erinnere, wollte ich im .config Dateipfad angeben, wo .NET Binder nach einer referenzierten Assembly suchen soll. Wenn ich recht habe, ist es möglich, den relativen Pfad innerhalb der Unterverzeichnisse nur vom aktuellen Verzeichnis und nicht von den absoluten absoluten Pfaden anzugeben. – Jox

27

Ja, das ist möglich! Angenommen, Sie haben so etwas in Ihrer config:

<configuration> 
    <appSettings> 
    <add key="mypath" value="%DLLPATH%\foo\bar"/> 
    </appSettings> 
</configuration> 

Dann können Sie leicht den Weg bekommen:

var pathFromConfig = ConfigurationManager.AppSettings["mypath"]; 
var expandedPath = Environment.ExpandEnvironmentVariables(pathFromConfig); 

ExpandEnvironmentVariables(string s) macht die Magie von allen Umgebungsvariablen innerhalb eines Strings mit den aktuellen Werten zu ersetzen.

Verwandte Themen