Visual studio 2015 通过设置环境变量重写用户宏

Visual studio 2015 通过设置环境变量重写用户宏,visual-studio-2015,Visual Studio 2015,我将库位置定义为用户宏,这很好。 但是,我需要一种方法,用环境变量的值覆盖这个定义。(如果未定义此环境变量,则应使用所述预定义的用户宏值。) 有办法吗?有办法,但您必须直接编辑项目文件,例如,通过解决方案资源管理器中项目的上下文菜单“卸载”,然后在VS中打开它(也在上下文菜单中,我不记得确切的名称) 项目文件是MSBuild(XML)文件。环境变量可以通过$()作为属性直接访问。用户宏值最终也会出现在属性中。它们的值可以在设置后被重写,这通常发生在PropertyGroup元素中 假设您的用户宏

我将库位置定义为用户宏,这很好。 但是,我需要一种方法,用环境变量的值覆盖这个定义。(如果未定义此环境变量,则应使用所述预定义的用户宏值。)


有办法吗?

有办法,但您必须直接编辑项目文件,例如,通过解决方案资源管理器中项目的上下文菜单“卸载”,然后在VS中打开它(也在上下文菜单中,我不记得确切的名称)

项目文件是MSBuild(XML)文件。环境变量可以通过
$()
作为属性直接访问。用户宏值最终也会出现在属性中。它们的值可以在设置后被重写,这通常发生在
PropertyGroup
元素中

假设您的用户宏是
FooDir
。然后,您将在项目文件中找到类似的内容

<PropertyGroup>
  ...
  <FooDir>...</FooDir>
  ...
</PropertyGroup>

...
...
...
如果您现在添加

<PropertyGroup>
  <FooDir Condition="'$(FOO_DIR)' != ''">$(FOO_DIR)</FooDir>
</PropertyGroup>

$(福乌迪尔)
紧接着,它将选取环境变量
FOO_DIR
作为默认值,以覆盖用户宏(如果它不是空的)


请参见

此解决方案有效。但是,它使用的环境变量的名称与用户宏名称不同,为了一致性,我希望使用相同的名称。有可能吗?那么,您可以删除添加的
PropertyGroup
元素,并将反转条件添加到MSDN页面上提到的属性的第一个定义中。如果环境变量具有相同的名称,则该属性已存在且为非空,将不会进行设置。但是我不知道如果你这样做的话,是否仍然可以用VS编辑用户宏值。