我正在使用C#编写项目附加组件(VSTO),以编程方式生成挣值图表(计划工作量与实际工作量与实际工时完成时间),我想存储 < em>每周实际工作 Microsoft Project 2016(MSP)文件(.mpp)中的数据。
在MSP中:我们不需要知道每项活动花费了多少精力。对于此图表,我只需要每周整个项目的实际工作量。我们使用不同的系统来衡量每个开发活动的计划工作量与实际工作量。
我要存储的示例数据集:
Week# Hrs per week
2018-W16 900.00
2018-W17 1038.50
2018-W18 811.25
我已经获得了用于导出/存储&#34; 计划工作&#34;的解决方案。和&#34; 实际工作已完成&#34;。如果我可以存储这个&#34; 每周实际努力&#34;最后一块将被解决。 MSP文件中的数据。
AFAIK,并避免XY problem:下面列出的限制因素阻止我使用内置MSP功能(生成图形)或数据存储(存储我的自定义数据)。
在每个项目计划中,我无法在现有任务上更改这些值:Resource Names
,Duration
,Start
,Finish
,Predecessor
,Successor
。这样做会改变计划并引起建筑师和项目经理的愤怒。
我们的团队&#39;在多个外部系统中跟踪实际小时数(例如:VSTS,Basecamp,自定义应用程序),并且不得更改以支持我的需求。
View > Task Usage
)会导致MSP自动调整该任务的Duration
,这违反了上述限制。Duration
的自动调整)。 Arch&amp; PM要求启用项目设置Auto-scheduling
。允许手动计划的任务,只要它们以这种方式单独手动设置(例如:手动覆盖Start
)。我可以在操作期间暂时禁用Auto-scheduling
(通过Microsoft.Office.Interop.MSProject.Application.Calculation = PjCalculation.pjManual
),只要我之后恢复它。
使用Duration = 0 days
创建虚拟任务,并通过View > Task Usage
记录小时数。为此任务分配任何小时时,MSP会相应地自动调整Duration
。由于此任务现在出现在项目计划中,我怀疑Arch / PM不会批准,因为他们根据项目中的Duration
值进行计算。
创建一个未分配给任何任务的虚拟用户,并尝试通过View > Resource Usage
为其分配小时数。 MSP阻止了这个(灰色),直到我将用户分配给任务。将此虚拟用户分配给任何任务,然后分配任何小时数据,将导致MSP自动调整Duration
。
创建虚拟里程碑任务。设置字段:Duration = 0
,Start = last day of week
,Finish = last day of week
,并将每周实际小时数存储在自定义字段中(以避免MSP自动调整Duration
)。对项目执行的每周重复一次。
View > Data > Filter
)以避免在项目中出现所有这些额外的虚拟任务(每周一次)。我希望有更好的解决方案来存储这些数据,或者更好的方法来隐藏用户的这些数据。检查.mpp文件。存储为二进制数据,我无法解码。尝试通过Project Data Interchange XML Element Structure文档和MSP导出到XML来学习数据存储的可能性:我没有看到任何我可以使用的字段,它们不会违反上面列出的约束。
custom data storage ms project
的搜索会返回有关使用自定义字段的信息,但这还不足以解决。答案 0 :(得分:1)
听起来你的核心问题是:我想在.mpp flie中的某个地方存储项目级别(因此不是任务/资源/分配数据)。看看类似的讨论Where can I save the settings entered by the user?;有关自定义字段的扩展信息,我认为可以解决您的问题。