محاسبه پروژه به صورت برنامه ای با استفاده از سی شارپ

می‌توانیم زمان‌بندی یا هزینه‌های پروژه را با استفاده از حالت‌های محاسبه تعریف‌شده در گزینه‌های پروژه برای Microsoft Project محاسبه کنیم. برنامه زمانبندی پروژه تاریخ شروع و پایان تمام وظایف پروژه را نشان می دهد. Microsoft Project امکان محاسبه پروژه را به صورت دستی یا خودکار می دهد. به عنوان یک توسعه دهنده سی شارپ، می توانیم به راحتی حالت محاسبه پروژه را در برنامه های دات نت تنظیم کنیم و ویژگی های پروژه را محاسبه کنیم. در این مقاله یاد می گیریم که چگونه یک پروژه را به صورت برنامه نویسی با استفاده از سی شارپ محاسبه کنیم.

موضوعات زیر در این مقاله پوشش داده خواهد شد:

C# API برای محاسبه پروژه به صورت برنامه ریزی شده

برای تنظیم حالت‌های محاسبه پروژه، از Aspose.Tasks for .NET API استفاده خواهیم کرد. این سه حالت محاسبه پروژه را برای محاسبه مقادیر خواص وابسته ارائه می دهد. این حالت های محاسبه عبارتند از:

  • هیچ - فقط ویژگی های ضروری را تنظیم می کند و تاریخ ها و هزینه های پروژه را دوباره محاسبه نمی کند.
  • دستی - فقط ویژگی های شی وابسته را بدون محاسبه مجدد تاریخ ها و هزینه های پروژه تنظیم می کند.
  • خودکار - تاریخ پروژه و ویژگی های هزینه را به طور خودکار دوباره محاسبه می کند.

API حالت های محاسبه فوق را در شمارش CalculationMode تعریف می کند. ویژگی CalculationMode در کلاس Project امکان تنظیم یا دریافت مقدار CalculationMode را می دهد. API همچنین اجازه می دهد تا یک پروژه موجود را به منظور اضافه کردن برخی تغییرات دستکاری کنید. علاوه بر این، اجرای یکپارچه عملیات پایه و همچنین پیشرفته مدیریت پروژه را تسهیل می کند. لطفاً DLL API را دانلود یا با استفاده از NuGet نصب کنید.

PM> Install-Package Aspose.Tasks

محاسبه دستی پروژه با استفاده از سی شارپ

می‌توانیم حالت محاسبه را به صورت دستی تنظیم کنیم و با انجام مراحل زیر آن را تأیید کنیم:

  1. ابتدا یک نمونه از کلاس Project ایجاد کنید.
  2. سپس حالت محاسبه را روی Manual قرار دهید.
  3. سپس تاریخ شروع پروژه را مشخص کنید.
  4. در مرحله بعد، وظایف جدید را اضافه کنید، به عنوان مثال، Task 1 و Task 2.
  5. سپس، ویژگی های وظیفه را در حالت دستی تنظیم کنید.
  6. پس از آن، یک شی از کلاس TaskLinks را مقداردهی اولیه کنید و وظایف را پیوند دهید.
  7. در نهایت تاریخ شروع و پایان Task 2 را بررسی کنید.

نمونه کد زیر نحوه محاسبه دستی یک پروژه با استفاده از C# را نشان می دهد.

// این مثال کد نحوه تنظیم حالت محاسبه پروژه دستی را نشان می دهد.
// یک نمونه از پروژه ایجاد کنید
Project project = new Project();

// حالت محاسبه را روی Manual قرار دهید
project.CalculationMode = CalculationMode.Manual;

// تعیین تاریخ شروع پروژه
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// کارهای جدید اضافه کنید
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// ویژگی های لازم در حالت دستی تنظیم می شوند
Console.WriteLine("Task1.Id Equals 1 : {0} ", task1.Get(Tsk.Id).Equals(1));
Console.WriteLine("Task1 OutlineLevel Equals 1 : {0} ", task1.Get(Tsk.OutlineLevel).Equals(1));
Console.WriteLine("Task1 Start Equals 15/04/2015 08:00 AM : {0} ", task1.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task1 Finish Equals 15/04/2015 05:00 PM : {0} ", task1.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task1 Duration Equals 1 day : {0} ", task1.Get(Tsk.Duration).ToString().Equals("1 day"));
Console.WriteLine("Task2 Start Equals 15/04/2015 08:00 AM : {0} ", task2.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task2 Finish Equals 15/04/2015 05:00 PM : {0} ", task2.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task2 Duration Equals 1 day : {0} ", task2.Get(Tsk.Duration).ToString().Equals("1 day"));

// دو کار را به یکدیگر پیوند دهید، تاریخ آنها نباید در حالت دستی دوباره محاسبه شود
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// بدون تغییر در تاریخ های Task 2
Console.WriteLine("Task1 Start Equals Task2 Start : {0} ", task1.Get(Tsk.Start).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).Equals(task2.Get(Tsk.Finish)));
Task1.Id Equals 1 : True
Task1 OutlineLevel Equals 1 : True
Task1 Start Equals 15/04/2015 08:00 AM : True
Task1 Finish Equals 15/04/2015 05:00 PM : True
Task1 Duration Equals 1 day : True
Task2 Start Equals 15/04/2015 08:00 AM : True
Task2 Finish Equals 15/04/2015 05:00 PM : True
Task2 Duration Equals 1 day : True
Task1 Start Equals Task2 Start : True
Task1 Finish Equals Task2 Finish : True

محاسبه خودکار پروژه با استفاده از سی شارپ

می‌توانیم حالت محاسبه را به صورت خودکار تنظیم کنیم و با انجام مراحل زیر آن را تأیید کنیم:

  1. ابتدا یک نمونه از کلاس Project ایجاد کنید.
  2. سپس حالت محاسبه را روی Automatic قرار دهید.
  3. سپس، تاریخ شروع پروژه را تعیین کنید.
  4. اکنون، وظایف جدید، به عنوان مثال، Task 1 و Task 2 را اضافه کنید.
  5. پس از آن، یک شی از کلاس TaskLinks را مقداردهی اولیه کنید و وظایف را پیوند دهید.
  6. در نهایت، تاریخ های محاسبه شده را بررسی کنید.

نمونه کد زیر نحوه محاسبه خودکار پروژه با استفاده از سی شارپ را نشان می دهد.

// این مثال کد نحوه تنظیم حالت محاسبه خودکار پروژه را نشان می دهد.
// یک نمونه از پروژه ایجاد کنید
Project project = new Project();

// حالت محاسبه را روی Automatic قرار دهید
project.CalculationMode = CalculationMode.Automatic;

// تعیین تاریخ شروع پروژه
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// کارهای جدید اضافه کنید
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// وظایف را پیوند دهید
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// تاریخ های محاسبه شده مجدد را بررسی کنید
Console.WriteLine("Task1 Start + 1 Equals Task2 Start : {0} ", task1.Get(Tsk.Start).AddDays(1).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish + 1 Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).AddDays(1).Equals(task2.Get(Tsk.Finish)));
Console.WriteLine("RootTask Finish Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.RootTask.Get(Tsk.Finish)));
Console.WriteLine("Project Finish Date Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.Get(Prj.FinishDate)));
Task1 Start + 1 Equals Task2 Start : True
Task1 Finish + 1 Equals Task2 Finish : True
RootTask Finish Equals Task2 Finish : True
Project Finish Date Equals Task2 Finish : True

بدون حالت محاسبه پروژه در سی شارپ

می‌توانیم حالت محاسبه را به صورت خودکار تنظیم کنیم و با انجام مراحل زیر آن را تأیید کنیم:

  1. ابتدا یک نمونه از کلاس Project ایجاد کنید.
  2. سپس حالت محاسبه را روی None قرار دهید.
  3. سپس تاریخ شروع پروژه را مشخص کنید.
  4. بعد، یک کار جدید اضافه کنید، به عنوان مثال، وظیفه 1.
  5. سپس ویژگی های وظیفه را بخوانید.
  6. پس از آن، مدت زمان کار را بر حسب روز تنظیم کنید.
  7. در نهایت تاریخ شروع و پایان Task را بررسی کنید.

نمونه کد زیر نشان می دهد که چگونه محاسبه پروژه را با استفاده از C# روی none تنظیم کنید.

// این مثال کد نحوه تنظیم Project Calculation Mode را به None نشان می دهد.
// یک نمونه از پروژه ایجاد کنید
Project project = new Project();

// حالت محاسبه را روی None قرار دهید
project.CalculationMode = CalculationMode.None;

// یک کار جدید اضافه کنید
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// توجه داشته باشید که حتی شناسه ها محاسبه نشده است
Console.WriteLine("Task.Id Equals 0 : {0} ", task.Get(Tsk.Id).Equals(0));
Console.WriteLine("Task.OutlineLevel Equals 0 : {0} ", task.Get(Tsk.OutlineLevel).Equals(0));
Console.WriteLine("Task Start Equals DateTime.MinValue : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Console.WriteLine("Task Duration Equals 0 mins : {0} ", task.Get(Tsk.Duration).ToString().Equals("0 mins"));

// ویژگی مدت زمان را تنظیم کنید
task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
Console.WriteLine("Task Duration Equals 2 days : {0} ", task.Get(Tsk.Duration).ToString().Equals("2 days"));
Console.WriteLine("Task Start Equals DateTime.MinValue  : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue  : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Task.Id Equals 0 : True
Task.OutlineLevel Equals 0 : False
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
Task Duration Equals 0 mins : True
Task Duration Equals 2 days : True
Task Start Equals DateTime.MinValue  : True
Task Finish Equals DateTime.MinValue  : True

مجوز رایگان دریافت کنید

برای امتحان کتابخانه بدون محدودیت ارزیابی، می توانید [یک مجوز موقت رایگان دریافت کنید].

نتیجه

در این مقاله یاد گرفتیم که چگونه حالت های محاسبه پروژه را به صورت برنامه ای تنظیم کنیم. ما همچنین دیدیم که چگونه مقادیر ویژگی های وابسته در هر حالت محاسبه با استفاده از C# محاسبه می شود. علاوه بر این، می‌توانید با استفاده از مستندات درباره Aspose.Tasks برای .NET API اطلاعات بیشتری کسب کنید. در صورت وجود هرگونه ابهام، لطفاً با ما در [تالار] تماس حاصل فرمایید11.

همچنین ببینید