Visual studio 带有vcproj/vsprops的可选环境变量

Visual studio 带有vcproj/vsprops的可选环境变量,visual-studio,environment-variables,vsprops,vcbuild,Visual Studio,Environment Variables,Vsprops,Vcbuild,是否有任何方法可以在项目文件(带或不带VSPROP)中替换环境变量,如果找不到该变量,则替换为默认值?我还没有找到任何方法来做到这一点,因为一切似乎都覆盖了环境变量 编辑:我需要它为属性工作,而不是为环境变量工作。具体来说,可以使用指定目标生成目录的环境变量从另一个源调用devenv。如果该变量不存在(可能是因为devenv只是用作IDE),那么它应该使用默认值 我已经在为MSBuild工作了;我现在需要它为VCBuild工作。嗯,显然我不知道如何在这里使用XML <PropertyGr

是否有任何方法可以在项目文件(带或不带VSPROP)中替换环境变量,如果找不到该变量,则替换为默认值?我还没有找到任何方法来做到这一点,因为一切似乎都覆盖了环境变量

编辑:我需要它为属性工作,而不是为环境变量工作。具体来说,可以使用指定目标生成目录的环境变量从另一个源调用devenv。如果该变量不存在(可能是因为devenv只是用作IDE),那么它应该使用默认值


我已经在为MSBuild工作了;我现在需要它为VCBuild工作。

嗯,显然我不知道如何在这里使用XML

 <PropertyGroup Condition=" '$(your_var)' == '' ">
  <your_var>default</your_var>
 </PropertyGroup>

违约

我不认为这可以在项目级别完成:据我所知,vc项目文件没有针对逻辑语句进行分析(除了可以使用批处理文件语法的构建事件之外,这是因为它们是作为批处理文件运行的)

您唯一能做的就是创建一个具有默认变量的全局环境变量。如果调用devenv的环境也指定了它,则将覆盖它

环境:

MYVSOUTDIR="c:/temp"
vcproj/vsprops:

OutputDirectory="$(MYVSOUTDIR)\_$(ConfigurationName)_$(PlatformName)"
在批处理文件中重写此选项:

set MYVSOUTDIR="d:/mytemp"
devenv

我知道这在技术上超出了我最初问题的范围,但我已经通过编写一个插件来解决这个问题,该插件将检测环境变量是否已设置,如果未设置,则构造变量的默认值并存储它。这不是最优雅的解决方案,但它确实有效。

不幸的是,这是针对MSBuild的,而不是针对VCBuild的。我希望事情能这么简单。很抱歉,我错过了你提到的VCBuild