C++ 为什么Visual Studio 2010不;“打开包装”;系统变量?

C++ 为什么Visual Studio 2010不;“打开包装”;系统变量?,c++,visual-studio-2010,environment-variables,ogre3d,system-variable,C++,Visual Studio 2010,Environment Variables,Ogre3d,System Variable,我试图设置一个Ogre3D应用程序,并将“OGRE_HOME”系统变量设置到SDK的HOME目录中。然后我使用$(OGRE\u HOME)系统变量设置项目属性,如项目属性中的include目录。但是当我试图编译应用程序时,编译器没有找到头文件,因此我不得不“硬编码”指向项目属性的SDK路径 我首先使用setx命令设置变量,然后尝试将其移动到系统变量,但没有帮助。但是,我没有尝试重新启动系统。MSBuild会展开环境变量$(食人魔之家)应该可以正常工作 唯一的问题是VisualStudio严重缓存

我试图设置一个Ogre3D应用程序,并将“OGRE_HOME”系统变量设置到SDK的HOME目录中。然后我使用
$(OGRE\u HOME)
系统变量设置项目属性,如项目属性中的include目录。但是当我试图编译应用程序时,编译器没有找到头文件,因此我不得不“硬编码”指向项目属性的SDK路径

我首先使用
setx
命令设置变量,然后尝试将其移动到系统变量,但没有帮助。但是,我没有尝试重新启动系统。

MSBuild会展开环境变量<代码>$(食人魔之家)应该可以正常工作

唯一的问题是VisualStudio严重缓存了这些环境变量的值,因此您所做的更改不会立即反映出来

有两种更改环境变量值的一般方法,这两种方法在VS中都会出错:

  • 从命令行更改值仅影响从命令行启动的应用程序。由于您可能是通过资源管理器从快捷方式启动VS,因此它不会继承新值

  • 通过计算机属性更改值应该正常工作,因为该对话框广播指示持久性环境变量已更改。不幸的是,VS似乎没有监听这些消息并更新其缓存

但是,重新启动(或注销并重新打开)应该可以解决问题,因为这将导致VS刷新环境变量的值

还值得注意的是,它们是环境变量的替代品。VS 2010通过Property Manager提供了一种非常强大的实现方法。可以使用设置创建项目属性页,然后可以将其附着到多个项目,以便它们都将继承这些设置。它在VS之外不起作用,但是如果您在那里做所有的开发工作,它会非常方便

MSBuild不展开环境变量<代码>$(食人魔之家)应该可以正常工作

唯一的问题是VisualStudio严重缓存了这些环境变量的值,因此您所做的更改不会立即反映出来

有两种更改环境变量值的一般方法,这两种方法在VS中都会出错:

  • 从命令行更改值仅影响从命令行启动的应用程序。由于您可能是通过资源管理器从快捷方式启动VS,因此它不会继承新值

  • 通过计算机属性更改值应该正常工作,因为该对话框广播指示持久性环境变量已更改。不幸的是,VS似乎没有监听这些消息并更新其缓存

但是,重新启动(或注销并重新打开)应该可以解决问题,因为这将导致VS刷新环境变量的值


还值得注意的是,它们是环境变量的替代品。VS 2010通过Property Manager提供了一种非常强大的实现方法。可以使用设置创建项目属性页,然后可以将其附着到多个项目,以便它们都将继承这些设置。它在VS之外不起作用,但是如果您在那里做所有的开发工作,它会非常方便

如setx文档中所述,新环境变量不适用于现有流程。如setx文档中所述,新环境变量不适用于现有流程。