.NET 8.0+의 경우 aspose.tasks로 마이그레이션하십시오

.NET 8.0.0 용 Tasks는 사용법 관점에서 상당한 변경 사항을 포함하는 API의 개선 된 버전입니다. 두 구현의 주요 차이점은 다음과 같습니다.

  • 레거시 API는 프로젝트, 작업, 리소스 등과 같은 다양한 프로젝트 데이터 클래스의 공개 분야를 설정할 수있었습니다.
  • 리소스 할당과 같은 특정 작업 후 레거시 API의 사용자가 수동으로 호출 해야하는 방법을 다시 계산하십시오. .NET API 용 새로운 aspose.tasks는 사용자 개입이 필요하지 않고 이러한 계산의 대부분을 자동으로 수행합니다.
  • 새로운 API는 MSP (Microsoft Project)와 유사한 자동 재 계산 모드뿐만 아니라 매뉴얼을 제공합니다. 수동 모드는 필요한 필드 만 계산하는 반면 자동 모드는 모든 것을 다시 계산합니다. 이를 통해 재 계산 방법을 수동으로 호출 할 필요가 없으며 전체 API 사용량이 향상됩니다.

이 새로운 API는 레거시 API와 호환되지 않으며이 기사의 목표는 코드를 새 API로 마이그레이션하는 데 도움이됩니다. 이 기사는 레거시 및 새로운 API 구현의 비교 코드 샘플을 보여 주며 다음을 포함합니다.

기본 프로젝트 속성 설정

Aspose.tasks의 레거시 API를 통해 프로젝트 클래스의 공개 속성을 직접 설정하여 프로젝트의 기본 속성을 설정할 수있었습니다. 그러나 새로운 API 구현에서는 세트를 노출시키고 동일한 방법을 얻을 수있는 메소드를 가져옵니다.

레거시 API 코드 샘플

1    Project prj = new Project();
2    prj.StartDate = DateTime.Now;
3    prj.DefaultStartTime = prj.StartDate;
4    prj.DefaultTaskType = TaskType.FixedDuration;
5    prj.DefaultStandardRate = 15;
6    prj.DefaultOvertimeRate = 12;
7    prj.DefaultTaskEVMethod = EarnedValueMethodType.PercentComplete;
8    prj.DefaultFixedCostAccrual = CostAccrualType.Prorated;
9    prj.Save( "Project4.xml" , Aspose.Tasks.Saving.SaveFileFormat.XML);
 1'Create a project instance
 2    Dim prj As New Project()
 3    prj.IsScheduleFromStart = True 
 4    prj.DefaultStartTime = prj.StartDate
 5    prj.DefaultTaskType = TaskType.FixedDuration
 6    prj.DefaultStandardRate = 15
 7    prj.DefaultOvertimeRate = 12
 8    prj.DefaultTaskEVMethod = EarnedValueMethodType.PercentComplete
 9    prj.DefaultFixedCostAccrual = CostAccrualType.Prorated
10    prj.Save("Project4.xml", Aspose.Tasks.Saving.SaveFileFormat.XML)

New Aspose.Tasks for .NET 8.x Approach

 1    Project project = new Project();
 2    project.Set(Prj.ScheduleFromStart,true);
 3    project.Set(Prj.StartDate, DateTime.Now);
 4    project.Set(Prj.DefaultStartTime,project.Get(Prj.StartDate));
 5    project.Task(TaskType, TaskType.FixedDuration);
 6    project.Set(Prj.DefaultStandardRate, 15);
 7    project.Set(Prj.DefaultOvertimeRate, 12);
 8    project.Set(Prj.DefaultTaskEVMethod, EarnedValueMethodType.PercentComplete);
 9    project.Set(Prj.DefaultFixedCostAccrual, CostAccrualType.Prorated);
10    project.Save("ProjectDefaultProps.xml", SaveFileFormat.XML);
 1    Dim project As New Project()
 2    project.[Set](Prj.ScheduleFromStart, True)
 3    project.Task(TaskType, DateTime.Now)
 4    project.[Set](Prj.DefaultStartTime, project.[Get](Prj.StartDate))
 5    project.[Set](Prj.DefaultTaskType, TaskType.FixedDuration)
 6    project.[Set](Prj.DefaultStandardRate, 15)
 7    project.[Set](Prj.DefaultOvertimeRate, 12)
 8    project.[Set](Prj.DefaultTaskEVMethod, EarnedValueMethodType.PercentComplete)
 9    project.[Set](Prj.DefaultFixedCostAccrual, CostAccrualType.Prorated)
10    project.Save("ProjectDefaultProps.xml", SaveFileFormat.XML)

Creating and Adding Calendar to a Project

In order for proper functionality of Calendar items added to the Project, the legacy API required to recalculate Calendar UIDs. In the new API, however, UIDs recalculation are automatically dealt and there is no need to call the calculations manually.

Legacy API Code Sample

 1    Project prj =  new Project();
 2    Aspose.Tasks.Calendar cal1 = new  Aspose.Tasks.Calendar();
 3    cal1.Name ="no info";
 4    Aspose.Tasks.Calendar cal2 = new  Aspose.Tasks.Calendar(1);
 5    cal2.Name = "no name";
 6    Aspose.Tasks.Calendar cal3 = new  Aspose.Tasks.Calendar( "cal3" );
 7    prj.Calendars.Add(cal1);
 8    prj.Calendars.Add(cal2);
 9    prj.Calendars.Add(cal3); 
10    prj.Save( "Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML);
 1    'Create a project instance
 2    Dim prj As New Project()
 3    'Define Calendar
 4    Dim cal1 As New Aspose.Tasks.Calendar()
 5    cal1.Name = "no info"
 6    Dim cal2 As New Aspose.Tasks.Calendar(1)
 7    cal2.Name = "no name"
 8    Dim cal3 As New Aspose.Tasks.Calendar("cal3")
 9    prj.Calendars.Add(cal2)
10    prj.Calendars.Add(cal3)
11    prj.CalcCalendarUids()
12    'Save the Project
13    prj.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML)

New Aspose.Tasks for .NET 8.x Approach

1 
2
3    Project prj = new Project();
4    Aspose.Tasks.Calendar cal1 = prj.Calendars.Add("no info");
5    Aspose.Tasks.Calendar cal2 = prj.Calendars.Add("no name");
6    Aspose.Tasks.Calendar cal3 = prj.Calendars.Add("cal3");
7    prj.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML);
1    'Create a project instance
2    Dim prj As New Project()
3    Dim cal1 As Aspose.Tasks.Calendar = prj.Cal 
4    Dim cal2 As Aspose.Tasks.Calendar = prj.Calendars.Add("no name")
5    Dim cal3 As Aspose.Tasks.Calendar = prj.Calendars.Add("cal3")
6    prj.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML)

Making A Standard Calendar

Recalculating Calendar UIDs are no more required in the new ASpose.Tasks’ API as compared to the legacy API.

Legacy API Code Sample

 1 
 2
 3    //Create a project instance
 4    Project prj = new  Project();
 5    //Define Calendar and make it standard
 6    Aspose.Tasks.Calendar cal1 = new  Aspose.Tasks.Calendar("My Cal");
 7    Aspose.Tasks.Calendar.MakeStandardCalendar(cal1);
 8    prj.Calendars.Add(cal1);
 9    prj.CalcCalendarUids();
10    prj.Save( "Project.Xml" , Aspose.Tasks.Saving.SaveFileFormat.XML);
1    'Create a project instance
2    Dim prj As New Project()
3    'Define Calendar and make it standard
4    Dim cal1 As New Aspose.Tasks.Calendar("My Cal")
5    Aspose.Tasks.Calendar.MakeStandardCalendar(cal1)
6    prj.Calendars.Add(cal1)
7    prj.CalcCalendarUids() 
8    prj.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML)

New Aspose.Tasks for .NET 8.x Approach

1    // Create a project instance
2    Project project = new Project();
3
4    // Define Calendar and make it standard
5    Aspose.Tasks.Calendar cal1 = project.Calendars.Add("My Cal");
6    Aspose.Tasks.Calendar.MakeStandardCalendar(cal1);
7    project.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML);
1    'Create a project instance
2    Dim project As New Project()
3
4    'Define Calendar and make it standard
5    Dim cal1 As Aspose.Tasks.Calendar = project.Calendars.Add("My Cal")
6    Aspose.Tasks.Calendar.MakeStandardCalendar(cal1)
7
8    'Save the Project
9    project.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML)

Create and Add Task to Project

Creating a new task in the legacy API, it required to define a root task, add it to the project as its root task, and then add a new task to this root task as a child. The new API, however, doesn’t need you to define the root task and takes care of it automatically while adding the first task to the project.

Legacy API Code Sample

 1    Project project = new Project();
 2    Task rootTask = new Task();
 3    Task tskGen = new Task("Task1");
 4    tskGen.Id = 1;
 5    tskGen.Uid = 1;
 6    tskGen.Start = DateTime.Parse("17-Aug-2009 8:00 AM" );
 7    tskGen.Finish = DateTime.Parse( "17-Aug-2009 5:00 PM" );
 8    project.RootTask = rootTask;
 9    project.RootTask.Children.Add(tskGen);
10    project.Save("Project.xml", SaveFileFormat.XML);
1    Dim project As New Project()
2    Dim tskGen As New Task("Task1")
3    tskGen.Id = 1
4    tskGen.Uid = 1
5    tskGen.Start = DateTime.Parse("17-Aug-2009 8:00 AM")
6    tskGen.Finish = DateTime.Parse("17-Aug-2009 5:00 PM")
7    project.RootTask = rootTask
8    project.RootTask.Children.Add(tskGen)
9    project.Save("Project.xml", SaveFileFormat.XML)

New Aspose.Tasks for .NET 8.x Approach

1    Project project = new Project();
2    Task task = project.RootTask.Children.Add("Task 1");
3    task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
4    // set task start day
5    project.Save("CreateTasks.xml", SaveFileFormat.XML);
1    Dim project As New Project()
2    Dim task As Task = project.RootTask.Children.Add("Task 1")
3    task.[Set](Tsk.Start, project.RootTask.[Get](Tsk.Start).AddDays(1))
4    'set task start day
5    project.Save("CreateTasks.xml", SaveFileFormat.XML)

Create and Add Resource to Project

Set and Get methods have been added to the Resource class of the API for manipulating attributes related to a project’s Resource.

Legacy API Code Sample

1    Project project = new Project();
2    Resource res =   Resource(new "Res1");
3    res.Id = 1;
4    res.Uid = 1;
5    res.Start = DateTime.Parse("19-Aug-2009 8:00 AM");
6    res.Finish = DateTime.Parse("19-Aug-2009 5:00 PM");
7    project.Resources.Add(res);
8    project.Save("Project.xml", SaveFileFormat.XML);
1    Dim project As New Project()
2    Dim res As New Resource("Res1")
3    res.Id = 1
4    res.Uid = 1
5    res.Start = DateTime.Parse("19-Aug-2009 8:00 AM")
6    res.Finish = DateTime.Parse("19-Aug-2009 5:00 PM")
7    project.Resources.Add(res)
8    project.Save("Project.xml", SaveFileFormat.XML)

New Aspose.Tasks for .NET 8.x Approach

1    Project project = new Project();
2    Resource rsc = project.Resources.Add("R1");
3    rsc.Set(Rsc.Start, DateTime.Parse("31-Aug-2014 8:00 AM"));
4    rsc.Set(Rsc.Finish, DateTime.Parse("31-Aug-2014 5:00 PM"));
5    project.Save("CreateResource.xml", SaveFileFormat.XML);
1    Dim project As New Project()
2    Dim rsc As Resource = project.Resources.Add("R1")
3    rsc.[Set](Rsc.Start, DateTime.Parse("31-Aug-2014 8:00 AM"))
4    rsc.[Set](Rsc.Finish, DateTime.Parse("31-Aug-2014 5:00 PM"))
5    project.Save("CreateResource.xml", SaveFileFormat.XML)

Create and Add Resource Assignment to Project

The ResourceAssignment class also introduces the Set and Get methods similar to other data collections of the API such as Tasks, Resources and Tasks Links.

Legacy API Code Sample

 1    Project project = new Project();
 2    Task tskRoot =  new Task();
 3    Task task = new Task("Task");
 4    Resource rsc = new Resource();
 5    rsc.StandardRate = 10;
 6    rsc.OvertimeRate = 15;
 7    ResourceAssignment assignment = new ResourceAssignment(task, rsc);
 8    assignment.Uid = 1;
 9    assignment.Start = DateTime.Parse("18-Aug-2009 8:00 AM" );
10    assignment.Finish = DateTime.Parse("18-Aug-2009 5:00 PM" );
11    project.RootTask = tskRoot;
12    project.RootTask.Children.Add(task);
13    project.Resources.Add(res);
14    project.ResourceAssignments.Add(assignment);
15    project.Save("project.xml", SaveFileFormat.XML);
 1    Dim project As New Project()
 2    Dim tskRoot As New Task()
 3    Dim task As New Task("Task")
 4    Dim rsc As New Resource()
 5    rsc.StandardRate = 10
 6    rsc.OvertimeRate = 15
 7    Dim assignment As New ResourceAssignment(task, rsc)
 8    assignment.Start = DateTime.Parse("18-Aug-2009 8:00 AM" )
 9    assignment.Finish = DateTime.Parse("18-Aug-2009 5:00 PM" )
10    assignment.Uid = 1
11    project.RootTask = tskRoot
12    project.RootTask.Children.Add(task)
13    project.Resources.Add(res)
14    project.ResourceAssignments.Add(assignment)
15    project.Save("project.xml", SaveFileFormat.XML)

New Aspose.Tasks for .NET 8.x Approach

1    Project project = new Project();
2    Task task = project.RootTask.Children.Add("Task");
3    Resource rsc = project.Resources.Add("Rsc");
4    rsc.Set(Rsc.StandardRate, 10);
5    rsc.Set(Rsc.OvertimeRate, 15);
6    ResourceAssignment assignment = project.ResourceAssignments.Add(task, rsc);
7    assignment.Set(Assn.Start,DateTime.Parse("18-Aug-2009 8:00 AM" ));
8    assignment.Set(Assn.Finish, DateTime.Parse("18-Aug-2009 5:00 PM" ));
9    project.Save("ResourceAssignments.xml", SaveFileFormat.XML);
1    Dim project As New Project()
2    Dim task As Task = project.RootTask.Children.Add("Task")
3    Dim rsc As Resource = project.Resources.Add("Rsc")
4    rsc.[Set](Rsc.StandardRate, 10)
5    rsc.[Set](Rsc.OvertimeRate, 15)
6    Dim assignment As ResourceAssignment = project.ResourceAssignments.Add(task, rsc)
7    assignment.Set(Assn.Start,DateTime.Parse("18-Aug-2009 8:00 AM"))
8    assignment.Set(Assn.Finish, DateTime.Parse("18-Aug-2009 5:00 PM" ) project.Save("ResourceAssignments.xml", SaveFileFormat.XML))

Conclusion

Migrating to Aspose.Tasks for .NET 8.0.0+ involves:

By following these updated patterns, your project will be compatible with the latest version of Aspose.Tasks, benefiting from improved consistency and flexibility.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.