如何在 MS-Project 文件中存储自定义(非任务)数据?
How to store custom (non-task) data in MS-Project file?
我正在使用 C# 编写项目插件 (VSTO),以编程方式生成挣值图表(计划工作量与实际工作量与实际完成工作量),我想存储 Microsoft Project 2016 (MSP) 文件 (.mpp) 中的每周实际工作量 数据。
在 MSP 中:我们不需要知道每个 activity 花费了多少精力。对于此图表,我只需要 整个项目每周的实际工作量 。对于每个开发人员 activity.
,我们使用不同的系统来衡量 计划工作量 与 实际工作量
我要存储的示例数据集:
Week# Hrs per week
2018-W16 900.00
2018-W17 1038.50
2018-W18 811.25
我有 deriving/storing“计划工作”和“已完成的实际工作”的解决方案。如果我可以将这个“Weekly actual effort”数据存储在 MSP 文件中,那么最后一块就会得到解决。
AFAIK,并避免 XY problem:下面列出的限制阻止我使用内置 MSP 功能(生成图形)或数据存储(存储我的自定义数据)。
约束条件
在每个项目计划中,我无法更改 现有 任务的这些值:Resource Names
、Duration
、Start
, Finish
, Predecessor
, Successor
。这样做会改变计划并招致建筑师和项目经理对我的愤怒。
我们团队的实际工作时间在多个外部系统(例如:VSTS、Basecamp、自定义应用程序)中进行跟踪,并且不会为了支持我的需求而进行更改。
- 从 MSP 和时间跟踪系统中提取此数据,然后手动创建数据集以生成挣值图表(在 Excel 中)花费的时间太长,希望将其自动化。
- 将时间分段的实际小时数分配给任务(通过
View > Task Usage
)会导致 MSP 自动调整该任务的 Duration
,这违反了上述约束。
- MSP 中的任务和外部时间跟踪系统中的项目未一对一映射。手动决定哪些时间用于哪些 MSP 任务是繁重且耗时的。在 MSP 任务上存储带日期的小时数会产生上一期中提到的后果(
Duration
的自动调整)。
Arch 和 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 来了解数据存储的可能性:我没有看到我可以使用的任何字段都不会违反上面列出的限制。
- Google-fu: 我搜索了
custom data storage ms project
returns 有关使用自定义字段的信息,这还不足以解决问题。
听起来您的核心问题是:我想在 .mpp 文件中的某处存储项目级(因此不是 task/resource/assignment 数据)。看看类似的讨论 ;关于自定义字段的扩展信息我认为可以解决您的问题。
我正在使用 C# 编写项目插件 (VSTO),以编程方式生成挣值图表(计划工作量与实际工作量与实际完成工作量),我想存储 Microsoft Project 2016 (MSP) 文件 (.mpp) 中的每周实际工作量 数据。
在 MSP 中:我们不需要知道每个 activity 花费了多少精力。对于此图表,我只需要 整个项目每周的实际工作量 。对于每个开发人员 activity.
,我们使用不同的系统来衡量 计划工作量 与 实际工作量我要存储的示例数据集:
Week# Hrs per week
2018-W16 900.00
2018-W17 1038.50
2018-W18 811.25
我有 deriving/storing“计划工作”和“已完成的实际工作”的解决方案。如果我可以将这个“Weekly actual effort”数据存储在 MSP 文件中,那么最后一块就会得到解决。
AFAIK,并避免 XY problem:下面列出的限制阻止我使用内置 MSP 功能(生成图形)或数据存储(存储我的自定义数据)。
约束条件
在每个项目计划中,我无法更改 现有 任务的这些值:
Resource Names
、Duration
、Start
,Finish
,Predecessor
,Successor
。这样做会改变计划并招致建筑师和项目经理对我的愤怒。我们团队的实际工作时间在多个外部系统(例如:VSTS、Basecamp、自定义应用程序)中进行跟踪,并且不会为了支持我的需求而进行更改。
- 从 MSP 和时间跟踪系统中提取此数据,然后手动创建数据集以生成挣值图表(在 Excel 中)花费的时间太长,希望将其自动化。
- 将时间分段的实际小时数分配给任务(通过
View > Task Usage
)会导致 MSP 自动调整该任务的Duration
,这违反了上述约束。 - MSP 中的任务和外部时间跟踪系统中的项目未一对一映射。手动决定哪些时间用于哪些 MSP 任务是繁重且耗时的。在 MSP 任务上存储带日期的小时数会产生上一期中提到的后果(
Duration
的自动调整)。
Arch 和 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 来了解数据存储的可能性:我没有看到我可以使用的任何字段都不会违反上面列出的限制。
- Google-fu: 我搜索了
custom data storage ms project
returns 有关使用自定义字段的信息,这还不足以解决问题。
听起来您的核心问题是:我想在 .mpp 文件中的某处存储项目级(因此不是 task/resource/assignment 数据)。看看类似的讨论