2008-12-11 3 views

Répondre

5

Est-ce une entrée de configuration que vous lisez, ou est .NET le lire? Si vous le lisez vous-même, vous pouvez faire vous-même la substitution appropriée (en utilisant Environment.ExpandEnvironmentVariables pour faire le lot ou Environment.GetEnvironmentVariable si vous voulez être plus sélectif).

Si c'est un que .NET lira, je ne connais aucun moyen de le faire développer des variables d'environnement. Le fichier de configuration est-il sous votre contrôle? Pourriez-vous juste le réécrire?

En fait, même si vous pouvez faire la substitution, est-ce vraiment ce que vous voulez faire? Si vous devez spécifier le chemin d'accès complet à une DLL, je suppose que vous aurez besoin de le trouver via le DLLPATH (en vérifiant sa présence dans chaque partie du chemin d'accès), puis sous-créer% DLLPATH% \ Foo.dll avec le chemin complet vers Foo.dll.

+0

Merci Jon. Je ne suis pas sûr que je me rappelle exactement le problème, mais si je me souviens, ce que je voulais est de spécifier dans le chemin du fichier .config où le classeur .NET devrait rechercher l'assembly référencé. Si j'ai raison, il est seulement possible de spécifier le chemin relatif dans les sous-répertoires du répertoire courant, pas les chemins absolus complets. – Jox

27

Oui, c'est possible! Supposons que vous ayez quelque chose comme ça dans votre config:

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

Ensuite, vous pouvez facilement obtenir le chemin avec:

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

ExpandEnvironmentVariables(string s)-ce que la magie en remplaçant toutes les variables d'environnement dans une chaîne avec leurs valeurs actuelles.

Questions connexes