我需要指定.config文件中程序集引用的dll的路径。 问题是路径可以在env中找到。变量。 是否可以在.config文件中使用某种%DLLPATH%宏?
答案 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的完整路径。