在.NET中使用.config文件的环境变量

时间:2008-12-11 07:56:11

标签: .net

我需要指定.config文件中程序集引用的dll的路径。 问题是路径可以在env中找到。变量。 是否可以在.config文件中使用某种%DLLPATH%宏?

2 个答案:

答案 0 :(得分:29)

是的,那是可能的!假设你的配置中有这样的东西:

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

然后您可以轻松地获得路径:

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

ExpandEnvironmentVariables(string s)通过将字符串中的所有环境变量替换为其当前值来实现神奇。

答案 1 :(得分:7)

这是阅读的配置条目,还是.NET读取它?如果您自己阅读,可以自己进行相应的替换(使用Environment.ExpandEnvironmentVariables进行批量处理,或Environment.GetEnvironmentVariable如果您想要更具选择性)。

如果它是.NET将要读取的,我不知道有什么方法可以扩展环境变量。配置文件是否在您的控制之下?你能改写一下吗?

事实上,即使你可以进行替换,这真的是你想要做的吗?如果你需要指定DLL的完整路径,我怀疑你需要找到它通过 DLLPATH(检查它在路径的每个部分的存在),然后删除%DLLPATH%\ Foo.dll,带有Foo.dll的完整路径。