MPXJ C# MSPID:将任务标记为已完成(100% 完成)

MPXJ C# MSPID: Mark task as done (100% complete)

我们使用的是 MPXJ 的 C# 版本,但不是检查现有的项目文件,而是使用它来生成一个纯代码(从第三方系统提取数据)的新文件,以便通过MSPDIWriter.

目标是在项目中加载 XML 时,让在其他系统中报告为已完成的任务显示为 100% 完成,并在甘特视图中显示它们旁边的 ✔ 复选标记。仅当分配给任务的总持续时间为零天时,这才按预期工作;对于 Project 打开时的任何其他持续时间,任务的完成百分比设置为 0%。

我们的开发人员不是项目人员,因此我们不清楚哪些属性会影响此行为:

Task childTask = parent.AddTask();
childTask.Name = sourceItem.Title;
Duration duration = Duration.getInstance(sourceItem.Days, TimeUnit.DAYS);
childTask.PercentageComplete = new java.lang.Integer(childItem.PercentageComplete);
childTask.PercentageWorkComplete = childTask.PercentageComplete;

ResourceAssignment assignment = childTask.AddResourceAssignment(resource);
assignment.Work = duration;
assignment.RemainingWork = duration;
assignment.percentageWorkComplete = childTask.PercentageComplete;

childTask.EffortDriven = false;
childTask.Priority = childItem.Priority;
childTask.Duration = duration;
childTask.BaselineDuration = duration;
if (childItem.PercentComplete == 100)
{
    childTask.RemainingWork = Duration.getInstance(0, TimeUnit.DAYS);
}

这个 sample code works through the steps to create a file from scratch with various combinations of un-started, partially complete, and completed tasks both with and without resource assignments. There is a C# version 但我必须承认我没有让两者保持一致。 Java 版本可能更完整,希望获得工作的 C# 版本应该相当简单。

我建议从这些示例开始,首先从中生成 MSPDI 文件,验证在将文件导入 MS Project 时是否获得了预期的结果。希望您随后能够根据示例文件中采用的方法更新您的代码。

需要注意的一件事是,最近对 MSPDI 生成进行了一些改进,使完成百分比正确显示,因此值得验证您使用的是最新版本的 MPXJ (7.9.2在撰写本文时)。