【问题标题】:How do I stop VS2K10 from caching environment variables如何阻止 VS2K10 缓存环境变量
【发布时间】:2011-06-27 16:01:20
【问题描述】:

我正在使用第三方库为计算机游戏编写 C++ 扩展。由于每个针对该系统进行开发的人可能在不同的目录中都有头文件,因此它使用其项目文件中的环境变量来指向这些头文件所在的位置。

有时会发布新版本的库,我倾向于保留新版本和旧版本,以防需要针对旧版本进行编译。

更改环境变量以指向新版本的位置在 Visual Studio 2008 中完美运行。

将环境变量更改为指向新版本的位置在 Visual Studio 2010 中是一个巨大的失败。

我已经尝试了以下所有方法:

  1. 使用setx 更改cmd shell 中的环境变量。
  2. 重新启动计算机
  3. 重新扫描解决方案
  4. 正在卸载和重新加载项目。
  5. 重新创建项目和解决方案文件。

这些都不起作用。

有没有办法防止VS2K10缓存环境变量?

【问题讨论】:

  • 如何设置环境变量?支持的方式是手动通过sysdm.cpl。它可以为当前用户或系统范围设置它们,前者覆盖后者。

标签: c++ visual-studio-2010 msbuild


【解决方案1】:

据我所知,Visual Studio 在启动时会加载环境变量,但自 VS2003 以来我没有使用环境变量。通常重新启动 Visual Studio 就足以获取新的环境变量。如果不是这种情况,那么不使用环境变量进行项目配置是另一个论据。

备选方案#1:使用属性表

由于您处于 Visual Studio 领域,因此您可以使用一个属性表或一系列属性表来继承项目设置,这些设置可以分发给每个开发人员,这些设置可用于定义不同构建、体系结构和常见包括的设置路径等。这样做通常意味着基于源代码控制树标准化开发环境。虽然他们可能会在本地更新或下拉源代码和库到不同的位置,但相对路径应该与通常基于非源代码控制的属性表相同。

备选方案#2:使用专用的构建机器。

设置了一台机器来执行您的各种构建,并可能运行冒烟测试和其他自动化单元测试。这允许开发人员在其中指定环境、解决方案和项目,但前提是他们只签入源文件。如果他们签入的源代码与构建机器环境不兼容,它应该能够发送带有附加输出的电子邮件,这样很容易将源代码控制的责备功能用于错误添加依赖项或其他任何内容的人情况可能是。在这种环境中安排夜间构建是很常见的,以便在新引入的错误被进一步更改之前发现它们。

也就是说,我过去曾使用环境变量来包含特定版本的 boost 和其他库,并且效果很好,因为我是该办公室中唯一使用 C++ 的开发人员,并且只有一台开发机器需要该环境。当你有多个人修改多个东西时,你真的需要想出某种统一的方式来布置你的源代码、库和输出。

【讨论】:

  • 我是唯一一个在这个扩展上工作的人,但是项目文件等最初是由第三方库提供的。如果有人关心的话,该游戏是 Source-engine 游戏,第三方库是 MetaMod:Source 和 SourceMod……所以我链接了 HL2SDK、MM:Source 和 SourceMod。
  • 嗯,在这种情况下,您是否尝试过简单地运行 VCVARS32.bat?从技术上讲,它是用于为命令行构建设置环境,但它也可能会刷新打开 devenv.exe 的环境,但我不确定。
  • 这个答案具有讽刺意味的是,属性表正是破坏并让我首先想到这个问题/答案的原因sigh
【解决方案2】:

事实证明,这可能与该计算机上配置 Visual Studio 或 Windows 的方式有关。我的笔记本电脑的 Visual Studio 2010 安装没有出现同样的问题。

这台机器上周后期出现了严重的存在故障,等我安装VS2010后看看更换的是否有同样的问题。

【讨论】:

    【解决方案3】:

    我不知道如何防止它,但缓存似乎存储在解决方案的 .suo 文件中。当我遇到同样的问题时,删除此文件会删除缓存的环境值。重新打开项目时,似乎重新创建了 .suo 文件。

    想想,我同时删除了vcproj.user文件。可以肯定的是,最好同时使用核武器。 :)

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 2016-10-02
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多