Lesen und Speichern von Projekten in Project Server oder Project Online

Aspose.Tasks for .NET bietet vollständige Unterstützung beim Arbeiten mit Project Server (lokal) und Project Online (cloudbasiert) durch Nutzung der Project Web Access (PWA) API. Dadurch können Entwickler Projekte, die in unternehmensweiten Projektmanagementumgebungen gespeichert sind, programmgesteuert erstellen, lesen und aktualisieren.

Eine solche Integration ist nützlich für Organisationen, die auf zentralisierte Projektrepositories angewiesen sind und Prozesse wie Massenaktualisierungen, geplante Berichterstattung oder Projektsynchronisierung automatisieren möchten, ohne manuelle Eingriffe in Microsoft Project oder Project Web App zu benötigen.

Verwaltung von Projekten mit Project Server

Aspose.Tasks for .NET führt die ProjectServerManager -Klasse zum Verbinden mit Project Server oder Project Online. Zur Authentifizierung verwenden Sie die ProjectServerCredentials -Klasse, die jetzt erlaubt, direkt SiteUrl, Username, und Password Früher mussten Entwickler die Microsoft.SharePoint.Client.Runtime assembly verwenden, um ein AuthToken abzurufen, aber diese Abhängigkeit ist nicht mehr erforderlich.

Hinweis: Derzeit unterstützt Aspose.Tasks for .NET keine moderne Authentifizierung für Project Online.
Die Legacy-Authentifizierung muss in Ihrem Azure-Portal und im Office 365 Admin Center aktiviert sein, damit die Integration erfolgreich ist.

Lesen eines Projekts aus Project Server

Das folgende Beispiel zeigt, wie man eine Verbindung zu Project Server herstellt und die Daten eines vorhandenen Projekts liest:

 1const string SharepointDomainAddress = "https://contoso.sharepoint.com";
 2const string UserName = "admin@contoso.onmicrosoft.com";
 3const string Password = "MyPassword";
 4
 5ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
 6ProjectServerManager manager = new ProjectServerManager(credentials);
 7IEnumerable<ProjectInfo> list = manager.GetProjectList();
 8
 9foreach (var info in list)
10{
11    Project project = manager.GetProject(info.Id);
12    Console.WriteLine("{0} - {1} - {2}", info.Name, info.CreatedDate, info.LastSavedDate);
13    Console.WriteLine("Resources count: {0}", project.Resources.Count);
14
15    // an user can read the project as raw data stream
16    var stream = manager.GetProjectRawData(info.Id);
17
18    // work with raw project data
19}

Erstellen eines Projekts in Project Server

Dieses Beispiel zeigt, wie man programmatisch ein neues Projekt in Project Server erstellt:

 1try
 2{
 3    const string SharepointDomainAddress = "https://contoso.sharepoint.com";
 4    const string UserName = "admin@contoso.onmicrosoft.com";
 5    const string Password = "MyPassword";
 6
 7    ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
 8
 9    Project project = new Project("New Project.mpp");
10
11    ProjectServerManager manager = new ProjectServerManager(credentials);
12    manager.CreateNewProject(project);
13}
14catch (ProjectOnlineException ex)
15{
16    Console.WriteLine(ex.Message);
17}

Sie können ein Projekt auch in Project Online mit vordefinierten Speicheroptionen:

1Project project = new Project("New Project.mpp");
2ProjectServerCredentials credentials = new ProjectServerCredentials("https://contoso.sharepoint.com", "admin@contoso.onmicrosoft.com", "MyPassword");
3ProjectServerManager manager = new ProjectServerManager(credentials);
4ProjectServerSaveOptions options = new ProjectServerSaveOptions
5{
6    Timeout = TimeSpan.FromSeconds(10)
7};
8manager.CreateNewProject(project, options);

Aktualisieren eines Projekts in Project Server

Dieses Beispiel zeigt, wie man ein vorhandenes Projekt in Project Server aktualisiert:

 1const string URL = "https://contoso.sharepoint.com";
 2const string Domain = "CONTOSO.COM";
 3const string UserName = "Administrator";
 4const string Password = "MyPassword";
 5
 6NetworkCredential windowsCredentials = new NetworkCredential(UserName, Password, Domain);
 7ProjectServerCredentials projectServerCredentials = new ProjectServerCredentials(URL, windowsCredentials);
 8try
 9{
10    ProjectServerManager manager = new ProjectServerManager(projectServerCredentials);
11
12    var projectInfo = manager.GetProjectList().FirstOrDefault(p => p.Name == "My project");
13    if (projectInfo == null)
14    {
15        Console.WriteLine("Project 'My project' not found in working store of Project Online account.");
16        return;
17    }
18
19    Project project = manager.GetProject(projectInfo.Id);
20    project.Set(Prj.FinishDate, new DateTime(2020, 03, 01));
21
22    Task task = project.RootTask.Children.Add("New task");
23    task.Set(Tsk.Start, new DateTime(2020, 02, 26));
24    task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
25
26    manager.UpdateProject(project);
27}
28catch (ProjectOnlineException ex)
29{
30    Console.WriteLine("Failed to update the project. Error: " + ex);
31}

Sie können Projekte auch in Project Online mit Speicheroptionen aktualisieren, wodurch Sie größere Kontrolle darüber erhalten, wie Änderungen angewendet werden:

 1const string SharepointDomainAddress = "https://contoso.sharepoint.com";
 2const string UserName = "admin@contoso.onmicrosoft.com";
 3const string Password = "MyPassword";
 4
 5ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
 6
 7try
 8{
 9    ProjectServerManager manager = new ProjectServerManager(credentials);
10
11    var projectInfo = manager.GetProjectList().FirstOrDefault(p => p.Name == "My project");
12    if (projectInfo == null)
13    {
14        Console.WriteLine("Project 'My project' not found in working store of Project Online account.");
15        return;
16    }
17
18    Project project = manager.GetProject(projectInfo.Id);
19    project.Set(Prj.FinishDate, new DateTime(2020, 03, 01));
20
21    Task task = project.RootTask.Children.Add("New task");
22    task.Set(Tsk.Start, new DateTime(2020, 02, 26));
23    task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
24
25    ProjectServerSaveOptions options = new ProjectServerSaveOptions { Timeout = TimeSpan.FromMinutes(5) };
26
27    manager.UpdateProject(project, options);
28}
29catch (ProjectOnlineException ex)
30{
31    Console.WriteLine("Failed to update the project. Error: " + ex);
32}

Durch die Verwendung von Aspose.Tasks for .NET können Entwickler nahtlos sowohl mit Project Server und Project Online. Dadurch wird das programmatische Erstellen, Lesen und Aktualisieren von Unternehmensprojekten ermöglicht, wodurch die Konsistenz leichter gewahrt, Arbeitsabläufe automatisiert und Projektdaten in größere Geschäftssysteme integriert werden können. Eine solche Automatisierung hilft, manuellen Aufwand zu reduzieren, die Genauigkeit zu verbessern und sicherzustellen, dass das Projektmanagement auf Unternehmensebene synchronisiert und effizient bleibt.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.