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, используя ProjectServerCredentials.
- Создайте и инициализируйте объект ProjectServerManager.
- Получите список проектов, используя метод ProjectServerManager.GetProjectList().
В следующем примере кода показано, как получить список проектов из 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, используя ProjectServerCredentials.
- Загрузите файл проекта (.mpp), используя класс Project.
- Создайте и инициализируйте объект ProjectServerManager.
- Создайте проект, используя метод ProjectServerManager.CreateNewProject().
В следующем примере кода показано, как создать новый проект в 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 из документации.