我将库位置定义为用户宏,这很好用。 但是,我需要一种方法来通过环境变量的值覆盖此定义。 (如果未定义此环境变量,则应使用所述预定义的用户宏值。)
有办法吗?
答案 0 :(得分:1)
有一种方法,但您必须直接编辑项目文件,例如通过解决方案资源管理器中项目的“卸载”上下文菜单,然后在VS中打开它(也在上下文菜单中,我不记得确切的名称)。
项目文件是MSBuild(XML)文件。环境变量可以通过$(<Name>)
直接作为属性访问。用户宏值也会在属性中结束。设置它们之后,可以覆盖它们的值,这通常发生在PropertyGroup
元素内。
假设您的用户宏为FooDir
。然后你会在项目文件中找到类似的东西
<PropertyGroup>
...
<FooDir>...</FooDir>
...
</PropertyGroup>
如果您现在添加
<PropertyGroup>
<FooDir Condition="'$(FOO_DIR)' != ''">$(FOO_DIR)</FooDir>
</PropertyGroup>
之后,它将获取环境变量FOO_DIR
作为默认值,以覆盖用户宏(如果它不为空)。