仅当 VSPROPS 变量不存在时如何设置它?

Posted

技术标签:

【中文标题】仅当 VSPROPS 变量不存在时如何设置它?【英文标题】:How to set a VSPROPS variable only if it does not already exist? 【发布时间】:2012-10-09 18:00:19 【问题描述】:

假设我有一个用于解决方案的.vsprops 文件。在该文件中,定义了各种变量,例如用于中间构建结果的 int_dir 和用于日志结果的 log_dir

通常,这些变量会设置为默认值(相对于解决方案)。

对于我来说,我想将这两个变量设置到我的 ramdisk (R:),即不再

$(SolutionDir)\intermediate

但是

R:\myproject\intermediate

如果我直接更改 .vsprops 文件,源代码管理 (Git) 会将其标记为已修改。

VSPROPS 中是否有一种方法可以检查环境变量,如果未设置此变量,则使用默认值?

如果这是不可能的,我也会对 Git 的解决方案感兴趣(但不是 --assume-unchanged 而不是 .gitignore,因为该文件中的其他更改可能是相关的)。

【问题讨论】:

【参考方案1】:

纯 Git 解决方案可以使用 gitattribute filter driver:

这将涉及一个在git checkout 上执行的smudge 脚本,它会:

检测是否要更改$(SolutionDir)(例如,测试其中包含更新路径的环境变量) 检测正确的文件(xxx.vsprops.tpl)内容(the script doesn't know the file names or path it operates on) 从.vsprops.tpl(模板文件)生成实际的.vsprops,该文件是版本化的(.vsprops 不再版本化)

您可以添加一个clean 脚本,它将保留(在git commit 上)在.vsprops 文件中完成的所有修改回到.vsprops.tpl$(SolutionDir) 行除外。

【讨论】:

以上是关于仅当 VSPROPS 变量不存在时如何设置它?的主要内容,如果未能解决你的问题,请参考以下文章

仅当事件处理程序不存在时,如何才能绑定它?

仅当文件不存在时如何创建文件?

仅当更新前不存在用户时如何将用户添加到索引 Elasticsearch

仅当实体尚不存在时,我是不是可以在 CloudFormation 中设置属性?

Microsoft Visual Studio 工程属性表props/vsprops创建与使用

仅当文件尚不存在时才将行附加到文件中