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

MS Project如何获取外部依赖任务的真实Unique ID(UID)

可以不解析字符串直接获取外部依赖的真实UID,具体实现逻辑如下:
你获取到的dep.From对象如果是跨项目依赖生成的幽灵任务,会自带ExternalTask布尔属性,属性值为True时即可判定为外部依赖。
此时不需要解析字符串,直接读取该幽灵任务的ExternalUID属性,就能拿到对应任务在源子项目中的原生UID,也就是你示例中需要的6。如果需要获取该任务在主项目中的全局UID,可以先读取该幽灵任务关联的Subproject对象的偏移基准值,再和ExternalUID相加即可。

修改后的参考代码如下:

private void TestGetPredessorUID(MSP.Task t)
{
    var taskDependencyList = t.TaskDependencies.ToList(); 
    taskDependencyList = taskDependencyList.Where(tDep => GetUID(tDep.To) == GetUID(t)).ToList();

    foreach (var dep in taskDependencyList)
    {
        MSP.Task fromTask = dep.From;
        int realUid;
        if (fromTask.ExternalTask)
        {
            // 取源子项目中的原生UID
            realUid = fromTask.ExternalUID;
            // 如果需要主项目全局UID,可通过Subproject计算:
            // int subprojectOffset = fromTask.Subproject.UniqueID * 65536; // 偏移基准为2^16
            // realUid = subprojectOffset + fromTask.ExternalUID;
        }
        else
        {
            // 同项目内依赖直接取UniqueID即可
            realUid = fromTask.UniqueID;
        }
        Debug.Print(realUid.ToString());
    }
}

如果需要定位源项目的具体文件路径,还可以读取fromTask.Project属性获取源项目的完整路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:00:01