【问题标题】:How to programmatically assign Lag in MSProject C#如何在 MSProject C# 中以编程方式分配滞后
【发布时间】:2020-05-28 05:52:54
【问题描述】:

Microsoft Docs LinkPredecessors 方法描述为:

public void LinkPredecessors (object Tasks, Microsoft.Office.Interop.MSProject.PjTaskLinkType Link = Microsoft.Office.Interop.MSProject.PjTaskLinkType.pjFinishToStart, object Lag);

如何将 Lag 值分配给“object Lag”?下面的代码用于分配前任和任务链接类型,但是,我不知道如何添加滞后。

Microsoft.Office.Interop.MSProject.PjTaskLinkType LinkType;

    var p = IApp.ActiveProject;
    foreach (var y in tasksPred)
    {
        int intTaskType = Convert.ToInt32(y.RelationshipType);

        switch (intTaskType)
        {
            case 0:
                LinkType = Microsoft.Office.Interop.MSProject.PjTaskLinkType.pjFinishToFinish;
                break;
            case 1:
                LinkType = Microsoft.Office.Interop.MSProject.PjTaskLinkType.pjFinishToStart;
                break;
            case 2:
                LinkType = Microsoft.Office.Interop.MSProject.PjTaskLinkType.pjStartToFinish;
                break;
            case 3:
                LinkType = Microsoft.Office.Interop.MSProject.PjTaskLinkType.pjStartToStart;
                break;
            default:
                LinkType = Microsoft.Office.Interop.MSProject.PjTaskLinkType.pjFinishToStart;
                break;
        }

        if (y.UniqueIDPredecessor != "")
        {
           p.Tasks[Convert.ToInt32(y.UniqueID)].LinkPredecessors(p.Tasks[Convert.ToInt32(y.UniqueIDPredecessor)], LinkType);
        }
    }

【问题讨论】:

  • 你不使用互操作,这是肯定的。甚至 MS Project 也使用服务器的 Web 服务
  • 自 2013 年以来,最好的方法是使用来自 Javascript、.NET 或任何可以进行 HTTP 调用的语言的 CSOM(客户端对象模型)。 2019 年,旧的 PSI 网络服务被删除

标签: c# ms-project-server-2016


【解决方案1】:

LinkPredecessors 方法需要一个字符串来表示滞后。来自文档:

一个字符串,指定链接任务之间的延迟时间。

例如:

  • “2d”表示 2 个工作日的延迟
  • “30ed”表示 30-过去-天的滞后
  • “4h”表示滞后 4 个工作小时
  • “3w”表示滞后 3 个工作周
  • “30m”表示滞后 30 个工作分钟

在时间单位之前添加“e”使其经过,如日历日。否则,延迟时间遵循工作日历。

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 2020-01-02
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多