在 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 路径发出警告,如何解决?