You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将EnvDTE Project全局变量保存到vcxproj.user而非.vcxproj文件

将自定义变量写入.vcxproj.user文件的实现方案

完全可以实现该需求。你当前使用的Project.Globals接口默认将持久化变量存储到主项目文件(projectname.vcxproj)中,要写入用户专属的projectname.vcxproj.user文件,需要使用IVsBuildPropertyStorage接口指定存储位置。

  • 首先添加必要的程序集引用:
    你需要在VS扩展项目中引用Microsoft.VisualStudio.Shell.Interop、Microsoft.VisualStudio.Shell.Interop.8.0程序集,同时引入对应命名空间。
  • 写入变量到*.vcxproj.user*的代码示例:
// 将现有Project对象强制转换为IVsBuildPropertyStorage接口
IVsBuildPropertyStorage propertyStorage = project as IVsBuildPropertyStorage;
if (propertyStorage != null)
{
    // 第三个参数传入PST_USER_FILE,指定将属性存储到用户配置文件
    propertyStorage.SetPropertyValue(
        "variablename", 
        "", 
        (uint)_PersistStorageType.PST_USER_FILE, 
        "write this value"
    );
}
  • 读取*.vcxproj.user*中变量的代码示例:
string readValue = string.Empty;
IVsBuildPropertyStorage propertyStorage = project as IVsBuildPropertyStorage;
if (propertyStorage != null)
{
    // 同样指定PST_USER_FILE,从用户配置文件读取属性
    int result = propertyStorage.GetPropertyValue(
        "variablename", 
        "", 
        (uint)_PersistStorageType.PST_USER_FILE, 
        out readValue
    );
    // 若result不等于0代表目标变量不存在,可自行补充初始化逻辑
}

该方式写入的变量会自动保存在*.vcxproj.user文件的<PropertyGroup>节点下,不会修改主.vcxproj*项目文件,完全满足用户本地配置不随源码提交的使用需求。

内容的提问来源于stack exchange,提问作者tobaroony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:57:01