Project Server и Project Online в C# ASP.NET

Project Online и Project Server — это многофункциональные решения для управления проектами и портфелями, предоставляемые корпорацией Майкрософт. Оба решения предлагают почти одинаковый набор функций для создания проектов и управления ими, однако они различаются в зависимости от того, какое решение лучше всего соответствует вашим требованиям. Например, если вам нужно локальное решение с большим контролем над аппаратным и программным обеспечением, вы можете выбрать Project Server. С другой стороны, Project Online служит облачным экземпляром Project Server, не требуя собственной инфраструктуры.

Может возникнуть ситуация, когда вам потребуется получить доступ к информации о проектах из Project Server/Online из ваших приложений. Чтобы иметь дело с такими случаями, в этой статье я покажу вам, как создавать/читать проекты в/из Project Server или Project Online в ваших приложениях .NET (ASP.NET и т. д.) или веб-службах с использованием C#. .

C# API для Project Server/онлайн

Для создания новых проектов и чтения существующих из Project Server/Online мы будем использовать Aspose.Tasks for .NET. Это кроссплатформенная библиотека классов для программного чтения и записи файлов MS Project в приложениях .NET Standard или .NET Core. API размещен на NuGet, а также доступен в виде пакета MSI и заархивированной DLL в разделе Загрузки.

Работа с сервером проектов

В этом разделе я покажу вам, как подключиться к Project Server и прочитать или создать проекты. Чтобы подключиться к Project Server, вам необходимо знать следующие сведения:

  • URL-адрес Project Server, например https://contoso.sharepoint.com.
  • Домен, т. е. contoso.com
  • Имя пользователя
  • Пароль

Чтение проектов из Project Server в C#

Ниже приведены шаги для подключения к Project Server и извлечения из него списка проектов.

  • Создайте экземпляр класса NetworkCredential и инициализируйте его учетными данными.
  • Создайте объект класса ProjectServerCredentials и инициализируйте его URL-адресом сервера проекта и объектом NetworkCredential.
  • Создайте объект класса ProjectServerManager и получите список проектов с помощью метода ProjectServerManager.GetProjectList().

В следующем примере кода показано, как читать проекты из Project Server на C#.

string url = "https://contoso.sharepoint.com";
string domain = "CONTOSO.COM";
string userName = "Administrator";
string password = "MyPassword";

NetworkCredential windowsCredentials = new NetworkCredential(userName, password, domain);
ProjectServerCredentials projectServerCredentials = new ProjectServerCredentials(url, windowsCredentials);
ProjectServerManager manager = new ProjectServerManager(projectServerCredentials);

var list = manager.GetProjectList();
foreach (var projectInfo in list)
{
    Console.WriteLine("{0} - {1} - {2}", projectInfo.Id, projectInfo.CreatedDate, projectInfo.Name);
}

Создать проект на Project Server в C#

Создать проект на Project Server очень просто. Просто подключитесь к Project Server так же, как в предыдущем примере, загрузите файл проекта (.mpp) с помощью класса Project и вызовите метод ProjectServerManager.CreateNewProject().

В следующем примере кода показано, как создать новый проект в Project Server на C#.

Project project = new Project("New Project.mpp");
NetworkCredential windowsCredentials = new NetworkCredential("Administrator", "MyPassword", "CONTOSO.COM");
ProjectServerCredentials projectServerCredentials = new ProjectServerCredentials("https://contoso.sharepoint.com", windowsCredentials);
ProjectServerManager manager = new ProjectServerManager(projectServerCredentials);
manager.CreateNewProject(project);

Работа с Project Online

Работа с Project Online очень похожа на работу с Project Server и отличается только созданием подключения. Чтобы подключиться к Project Online, вам необходимо знать следующие сведения:

  • URL-адрес
  • Имя пользователя
  • Пароль

Чтение проектов из Project Online на C#

Ниже приведены шаги для чтения проектов из Project Online.

В следующем примере кода показано, как получить список проектов из Project Online.

const string SharepointDomainAddress = "https://contoso.sharepoint.com";
const string UserName = "admin@contoso.onmicrosoft.com";
const string Password = "MyPassword";

ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
ProjectServerManager manager = new ProjectServerManager(credentials);
IEnumerable<ProjectInfo> list = manager.GetProjectList();

foreach (var info in list)
{
    Project project = manager.GetProject(info.Id);
    Console.WriteLine("{0} - {1} - {2}", info.Name, info.CreatedDate, info.LastSavedDate);
    Console.WriteLine("Resources count: {0}", project.Resources.Count);

    // пользователь может читать проект как необработанный поток данных
    var stream = manager.GetProjectRawData(info.Id);

    // работать с необработанными данными проекта
}

Создание проекта в Project Online на C#

Ниже приведены шаги по созданию нового проекта в Project Online.

В следующем примере кода показано, как создать новый проект в Project Online на C#.

string sharepointDomainAddress = "https://contoso.sharepoint.com";
string userName = "admin@contoso.onmicrosoft.com";
string password = "MyPassword";

ProjectServerCredentials credentials = new ProjectServerCredentials(sharepointDomainAddress, userName, password);

Project project = new Project("New Project.mpp");

ProjectServerManager manager = new ProjectServerManager(credentials);
manager.CreateNewProject(project);

Узнайте больше об Aspose.Tasks для .NET

Вы можете узнать больше об управлении проектами с помощью Aspose.Tasks для .NET из документации.