在 Visual Studio 定义中停止环境路径扩展

Posted

技术标签:

【中文标题】在 Visual Studio 定义中停止环境路径扩展【英文标题】:Stop Environment path expansion in visual studio define 【发布时间】:2016-11-15 20:25:41 【问题描述】:

我正在使用自动生成 Visual Studio 项目文件的程序。在这些生成的项目中,我希望有一个指定配置文件路径的#define。这将允许我在路径必须更改时不更改代码。在此路径中,我需要能够使用环境路径,例如

%LOCALAPPDATA%\\\\Company\\\\Config.cfg.

此环境变量必须存在于运行时。在我的预处理器列表中,我有:

CONFIGURATION_PATH="%LOCALAPPDATA%\\\\Company\\\\Config.cfg".

不幸的是,在使用时它会变成:

C:\Users\Username\AppData\Local\\Company\\Config.cfg.

这意味着它使用扩展路径编译。如果新用户运行该程序,路径将是错误的。无论如何,我可以在预处理器运行时阻止 Visual Studio 扩展环境变量吗?

对于这个问题,人们能想到其他解决方案吗?

【问题讨论】:

考虑将路径作为参数传递给程序。或者,将其存储在文件(xml?)中以供程序读取。 它正在许多其他程序中使用,因此可能不是最佳解决方案。此外,在文件中存储配置文件路径也无法达到目的,因为我需要该文件的路径。 您需要转义 % 字符。试试 %% 或 ^%。 @n.m.但是我可以在 C++ 中调用 ExpandEnvironmentPath 来获取运行时值吗?还是我必须修改字符串才能恢复到正确的版本? 试试看。看看你得到了什么。 【参考方案1】:

正如在documentation 中找到的,在msbuild 中转义特殊字符的方法是%XX,其中XX 是该字符的十六进制等价物。 (这有时称为“URL 编码”)。因此,为了从字面上使用百分比字符,您必须将其编码为%25。环境变量名称 %LOCALAPPDATA% 变为 %25LOCALAPPDATA%25 等。

【讨论】:

以上是关于在 Visual Studio 定义中停止环境路径扩展的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 自定义包含路径在链接时导致符号错误

如何添加停止 msbuild 构建项目 Visual Studio 构建选项

将 Visual Studio 2005 sln 迁移到 2008,在 LIB 环境变量中使用 vc98 路径发出警告,如何解决?

Visual Studio 添加 自定义 路径宏

以 Visual Studio 2013 结尾的错误环境变量路径

Visual Studio Code - 如何向 python 路径添加多个路径?