Добавление ссылок для задач в VSTO и Aspose.tasks
Примеры кода
vsto
Чтобы связать задачу, используя VSTO:
Создайте новый проект в Visual Studio.
В исследователе решения, щелкните правой кнопкой мыши и выберите «Добавить ссылку».
Выберите вкладку COM Components и выберите Microsoft Project 12.0 Библиотека объектов. Клике OK. Это импортирует Microsoft.office.interop.msproject Space имен в начале вашего кода. Используйте код из следующего примера, чтобы связать задачи.
1Microsoft.office.interop.msproject.application projectapplication = new MSProject.Application ();
2
3Object hispalue = System.Reflection.missing.value;
4
5projectapplication.fileopenex ("project.mpp",
6
7 missingValue, missingValue, missingValue, missingValue,
8
9 missingValue, missingValue, missingValue, missingValue,
10
11 missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
12
13 missingValue, missingValue, missingValue, missingValue,
14
15 missingValue);
16
17Microsoft.office.interop.msproject.project Project = projectApplication.activeProject;
18
19project.tasks.get_uniquid (2) .taskDependencies.Add (project.tasks.get_uniqueid (1), pjtasklinktype.pjfinishtostart);
20
21project.tasks.get_uniquid (3) .taskDependencies.Add (project.tasks.get_uniquid (2), pjtasklinktype.pjfinishtostart);
22
23project.tasks.get_uniquid (4) .taskDependencies.Add (project.tasks.get_uniquid (3), pjtasklinktype.pjfinishtostart);
24
25project.tasks.get_uniquid (5) .taskDependencies.Add (project.tasks.get_uniqueid (4), pjtasklinktype.pjfinishtostart);
26
27project.tasks.get_uniquid (5) .taskDependencies.Add (project.tasks.get_uniqueid (2), pjtasklinktype.pjfinishtostart);
28
29Foreach (задание TSK в Project.Tasks)
30
31{
32
33 foreach (TaskDependency dep in project.Tasks.get_UniqueID(tsk.ID).TaskDependencies)
34
35 {
36
37 Console.WriteLine("From ID = " + dep.From.ID + "=>To ID = " + dep.To.ID);
38
39 }
40
41 Console.WriteLine("____________________________________________________________");
42
43}
44
45projectapplication.filecloSeall (microsoft.office.interop.msproject.pjsavetype.pjsave);
Этот код C# использует Microsoft Project Interop, чтобы открыть существующий файл .mpp
и программно добавлять зависимости задачи. Во-первых, он инициализирует экземпляр Project Microsoft через Application
и открывает файл"project.mpp"
in Mode Pool только для чтения. Затем он получает активный проект и определяет несколько Finish-To-Start между задачами на основе их уникальных идентификаторов. В частности, задача 2 установлена для того, чтобы зависеть от задачи 1, задачи 3 на задаче 2, задаче 4 на задаче 3 и задаче 5 как на задаче 2, так и в задаче 4. После настройки этих зависимостей код итерации проникает во все задачи в проекте и распечатывает определенные отношения зависимости к консоли, показывая, какие задачи являются предшественниками и преемниками. Наконец, он сохраняет и закрывает файл проекта. Этот код демонстрирует, как разработчики могут автоматизировать конфигурацию отношений задач в Project Microsoft с использованием Com Interop, который требует, чтобы Microsoft Project был установлен в системе.
aspose.tasks
Чтобы связать задачи в проекте, используя Aspose.Tasks для .net:
Создайте новый проект в Visual Studio.
В исследователе решения, щелкните правой кнопкой мыши и выберите «Добавить ссылку».
Выберите вкладку .NET и выберите ASPOST.TASKS.CLICK OK. Это импортирует пространство имен Aspose.Tasks в начале вашего кода. Используйте код из следующего примера, чтобы связать задачи.
1Projectreader reader = new Projectreader ();
2
3FileStream ST = new FileStream ("project.mpp", filemode.open);
4
5Project prj = reader.read (st);
6
7S.Close ();
8
9Tasklink tasklink = new TaskLink (prj.roottask.children [0] как assope.tasks.task, prj.roottask.children [1] как assope.tasks.task, tasklinktype.finishtostart);
10
11prj.addtasklink (tasklink);
12
13tasklink = new TaskLink (prj.roottask.children [1] как assope.tasks.task, prj.roottask.children [2] как assope.tasks.task, tasklinktype.finishtostart);
14
15prj.addtasklink (tasklink);
16tasklink = new TaskLink (prj.roottask.children [2] как assope.tasks.task, prj.roottask.children [3] как assope.tasks.task, tasklinktype.finishtostart);
17
18prj.addtasklink (tasklink);
19
20tasklink = new Tasklink (prj.roottask.children [3] как assope.tasks.task, prj.roottask.children [4] как assope.tasks.task, tasklinktype.finishtostart);
21
22prj.addtasklink (tasklink);
23
24tasklink = new TaskLink (prj.roottask.children [1] как assope.tasks.task, prj.roottask.children [4] как assope.tasks.task, tasklinktype.finishtostart);
25
26prj.addtasklink (tasklink);
27
28ArrayList alllinks = new ArrayList (prj.tasklinks);
29
30Foreach (TaskLink TaskLink1 в Alllinks)
31
32{
33
34 Console.WriteLine("From ID = " + taskLink1.PredTask.Id + "=>To ID = " + taskLink1.SuccTask.Id);
35
36 Console.WriteLine("________________________________________");
37
38}
39
40prj.save ("project1.mpp", aspose.tasks.saving.savefileformat.mpp);
Этот код C# демонстрирует, как использовать Aspose.Tasks для .net для добавления зависимостей задач (ссылок на задачи) в существующий файл проекта Microsoft (.mpp
) и сохранить обновленный результат. Он начинается с открытия файла " project.mpp "
с использованием
fileStream ‘и чтения его с помощью projectreader'. Затем код программно создает несколько **отдельных** зависимостей между последовательными задачами (от первого до пятого ребенка), а также одной дополнительной зависимости между второй и пятой задачами. Каждая зависимость представлена объектом
tasklink, который добавляется в проект с использованием
addtasklink () . После того, как все зависимости добавляются, код собирает все ссылки на задачи в «ArrayList» и печатает каждое отношение к консоли, отображая идентификаторы задачи предшественника и преемника. Наконец, проект сохраняется в новом файле
" Project1.mpp “` в формате проекта Microsoft.