C# kullanarak Projeyi Programlı Olarak Hesaplayın

Microsoft Project için Proje seçeneklerinde tanımlanan hesaplama modlarını kullanarak proje çizelgelerini veya maliyetlerini hesaplayabiliriz. Bir proje zamanlaması, tüm proje görevlerinin başlangıç ve bitiş tarihini gösterir. Microsoft Project, proje hesaplamasının manuel veya otomatik olarak yapılmasını sağlar. Bir C# geliştiricisi olarak, .NET uygulamalarında proje hesaplama modunu kolayca ayarlayabilir ve proje özelliklerini hesaplayabiliriz. Bu yazımızda C# kullanarak programlı olarak proje hesaplamayı öğreneceğiz.

Bu yazıda aşağıdaki konular ele alınacaktır:

Projeyi Programlı Olarak Hesaplamak için C# API

Proje hesaplama modlarını ayarlamak için Aspose.Tasks for .NET API’sini kullanacağız. Bağımlı özelliklerin değerlerini hesaplamak için üç proje hesaplama modu sağlar. Bu hesaplama modları şunlardır:

  • Yok – yalnızca gerekli özellikleri ayarlar ve proje tarihlerini ve maliyetlerini yeniden hesaplamaz.
  • Manuel – proje tarihlerini ve maliyetlerini yeniden hesaplamadan yalnızca bağımlı nesne özelliklerini ayarlar.
  • Otomatik – proje tarihlerini ve maliyet özelliklerini otomatik olarak yeniden hesaplar.

API, yukarıda belirtilen hesaplama modlarını CalculationMode numaralandırmasında tanımlar. Project sınıfının CalculationMode özelliği, CalculationMode değerinin ayarlanmasına veya alınmasına izin verir. API ayrıca bazı değişiklikler eklemek için mevcut bir projeyi manipüle etmeye de izin verir. Ayrıca, temel ve gelişmiş proje yönetimi işlemlerinin sorunsuz bir şekilde gerçekleştirilmesini kolaylaştırır. Lütfen API’nin DLL’sini indirin veya NuGet kullanarak kurun.

PM> Install-Package Aspose.Tasks

C# kullanarak Manuel Proje Hesaplaması

Hesaplama modunu manuel olarak ayarlayabilir ve aşağıda verilen adımları izleyerek doğrulayabiliriz:

  1. İlk olarak, Project sınıfının bir örneğini oluşturun.
  2. Ardından, hesaplama modunu Manuel olarak ayarlayın.
  3. Ardından, proje başlangıç tarihini belirtin.
  4. Ardından, Görev 1 ve Görev 2 gibi yeni görevler ekleyin.
  5. Ardından, manuel modda ayarlanan görev özelliklerini okuyun.
  6. Bundan sonra, TaskLinks sınıfından bir nesne başlatın ve görevleri bağlayın.
  7. Son olarak, Görev 2’nin başlangıç ve bitiş tarihini doğrulayın.

Aşağıdaki kod örneği, C# kullanarak bir projenin el ile nasıl hesaplanacağını gösterir.

// Bu kod örneği, Manuel Proje Hesaplama Modunun nasıl ayarlanacağını gösterir.
// Projenin bir örneğini oluşturun
Project project = new Project();

// Hesaplama modunu Manuel olarak ayarlayın
project.CalculationMode = CalculationMode.Manual;

// Proje başlangıç tarihini belirleyin
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Yeni görevler ekle
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Gerekli özellikler manuel modda ayarlanır
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"));

// İki görevi birbirine bağlayın, tarihleri manuel modda yeniden hesaplanmayacaktır
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Görev 2 tarihlerinde değişiklik yok
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

C# kullanarak Otomatik Proje Hesaplama

Hesaplama modunu otomatik olarak ayarlayabilir ve aşağıda verilen adımları izleyerek doğrulayabiliriz:

  1. İlk olarak, Project sınıfının bir örneğini oluşturun.
  2. Ardından, hesaplama modunu Otomatik olarak ayarlayın.
  3. Ardından, proje başlangıç tarihini ayarlayın.
  4. Şimdi, Görev 1 ve Görev 2 gibi yeni görevler ekleyin.
  5. Bundan sonra, TaskLinks sınıfından bir nesne başlatın ve görevleri bağlayın.
  6. Son olarak, yeniden hesaplanan tarihleri doğrulayın.

Aşağıdaki kod örneği, projenin C# kullanılarak otomatik olarak nasıl hesaplanacağını gösterir.

// Bu kod örneği, Otomatik Proje Hesaplama Modunun nasıl ayarlanacağını gösterir.
// Projenin bir örneğini oluşturun
Project project = new Project();

// Hesaplama modunu Otomatik olarak ayarla
project.CalculationMode = CalculationMode.Automatic;

// Proje başlangıç tarihini belirleyin
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Yeni görevler ekle
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Bağlantı görevleri
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Yeniden hesaplanan tarihleri doğrulayın
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

C# Proje Hesaplama Modu Yok

Hesaplama modunu otomatik olarak ayarlayabilir ve aşağıda verilen adımları izleyerek doğrulayabiliriz:

  1. İlk olarak, Project sınıfının bir örneğini oluşturun.
  2. Ardından, hesaplama modunu Yok olarak ayarlayın.
  3. Ardından, proje başlangıç tarihini belirtin.
  4. Ardından, yeni bir görev ekleyin, örneğin, Görev 1.
  5. Ardından, görev özelliklerini okuyun.
  6. Bundan sonra, görev süresini gün olarak ayarlayın.
  7. Son olarak, Görevin başlangıç ve bitiş tarihini doğrulayın.

Aşağıdaki kod örneği, proje hesaplamasının C# kullanılarak hiçbiri olarak nasıl ayarlanacağını gösterir.

// Bu kod örneği, Proje Hesaplama Modunun Yok olarak nasıl ayarlanacağını gösterir.
// Projenin bir örneğini oluşturun
Project project = new Project();

// Hesaplama modunu Yok olarak ayarla
project.CalculationMode = CalculationMode.None;

// yeni bir görev ekle
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// Kimliklerin bile hesaplanmadığına dikkat edin
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"));

// Süre özelliğini ayarla
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

Ücretsiz Lisans Alın

Kitaplığı değerlendirme sınırlamaları olmadan denemek için ücretsiz bir geçici lisans alabilirsiniz.

Çözüm

Bu yazıda, programlı olarak proje hesaplama modlarının nasıl ayarlanacağını öğrendik. C# kullanılarak her bir hesaplama modunda bağımlı özelliklerin değerlerinin nasıl hesaplandığını da gördük. Ayrıca, documentation kullanarak Aspose.Tasks for .NET API hakkında daha fazla bilgi edinebilirsiniz. Herhangi bir belirsizlik durumunda, lütfen forumda bizimle iletişime geçmekten çekinmeyin.

Ayrıca bakınız