2010-08-20 119 views
3

我对MSBuild很陌生,所以我可能会做一些明显错误的事情,但是我的一位与MSBuild合作过的同事看不到任何错误,所以我想我' d张贴在这里,看看是否有其他人可以看到它。MSBuild无法扩展环境变量

我转换,我们习惯叫ant到的MSBuild任务(因为我们想从MSBuild的称呼它)一个旧的批处理文件和环境变量总是扩展到)因为我们不明白原因。

我具有包括

<PropertyGroup> 
    <EnvJavaHome> 
    $([System.Environment]::GetEnvironmentVariable("JAVA_HOME")) 
    </EnvJavaHome> 
    <!-- ... --> 
</PropertyGroup> 

(添加用于易读性换行符)的特性基团。现在MSBuild Property Functions reference建议我打电话System.Environment.GetEnvironmentVariable正确,但我总是得到值)。但是,当我对硬编码值进行编码时,代码工作得很好。

我错过了什么明显的东西? :o)

回答

6

如果它是一个env变量,您应该可以像 一样使用它,如<EnvJavaHome>$(JAVA_HOME)</EnvJavaHome>,请参阅参考资料。使用http://msdn.microsoft.com/en-us/library/ms171459(v=VS.100).aspx

(检查环境变量实际上虽然存在,echo %JAVA_HOME%在命令窗口)

+0

我刚刚发现一模一样的事情,想通发布之前其实我应该打重装。 谢谢! :o) – 2010-08-20 15:01:56

+2

就像一个警告,因为它咬了我。 Visual Studio以某种方式缓存环境变量,所以当你添加新的系统环境变量时,它可能仍然是空的。重新启动VS通常会有所帮助。 – slawek 2013-12-09 16:35:19