Project Server y Project Online en C# ASP.NET

Project Online y Project Server son las soluciones de gestión de carteras y proyectos ricas en funciones proporcionadas por Microsoft. Ambas soluciones ofrecen una gama casi similar de funciones para crear y administrar proyectos; sin embargo, difieren según la solución que mejor se adapte a sus requisitos. Por ejemplo, si desea la solución local con más control sobre el hardware y el software, puede optar por Project Server. Por otro lado, Project Online sirve como una instancia basada en la nube de Project Server sin requerir su propia infraestructura.

Puede darse el caso de que necesite acceder a la información de los proyectos de Project Server/Online desde dentro de sus aplicaciones. Para tratar estos casos, en este artículo, le mostraré cómo crear/leer los proyectos en/desde Project Server o Project Online dentro de sus aplicaciones .NET (ASP.NET, etc.) o servicios web usando C# .

API de C# para Project Server/en línea

Para crear los nuevos proyectos y leer los existentes desde Project Server/Online, usaremos Aspose.Tasks for .NET. Es una biblioteca de clases multiplataforma para leer y escribir archivos de MS Project mediante programación en aplicaciones .NET Standard o .NET Core. La API está alojada en NuGet y también está disponible como paquete MSI y archivo DLL comprimido en la sección Descargas.

Trabajar con el servidor de proyectos

En esta sección, le mostraré cómo conectarse al servidor de proyectos y leer o crear los proyectos. Para conectarse al Project Server, debe conocer los siguientes detalles:

Leer proyectos de Project Server en C#

Los siguientes son los pasos para conectarse a Project Server y recuperar la lista de proyectos de él.

El siguiente ejemplo de código muestra cómo leer proyectos de Project Server en 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);
}

Crear proyecto en Project Server en C#

Crear un proyecto en Project Server es tan simple como un pastel. Simplemente conéctese a Project Server de la misma manera que lo hizo en el ejemplo anterior, cargue el archivo del proyecto (.mpp) usando la clase Project y llame al método ProjectServerManager.CreateNewProject().

El siguiente ejemplo de código muestra cómo crear un nuevo proyecto en Project Server en 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);

Trabajar con Proyecto en línea

Trabajar con Project Online es bastante similar a trabajar con Project Server y solo difiere en la creación de la conexión. Para conectarse a Project Online, debe conocer los siguientes detalles:

  • URL
  • Nombre de usuario
  • Clave

Leer proyectos de Project Online en C#

Los siguientes son los pasos para leer proyectos de Project Online:

El siguiente ejemplo de código muestra cómo recuperar la lista de proyectos de 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);

    // un usuario puede leer el proyecto como flujo de datos sin procesar
    var stream = manager.GetProjectRawData(info.Id);

    // trabajar con datos de proyecto sin procesar
}

Crear un proyecto en Project Online en C#

Los siguientes son los pasos para crear un nuevo proyecto en Project Online:

El siguiente ejemplo de código muestra cómo crear un nuevo proyecto en Project Online en 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);

Más información sobre Aspose.Tasks for .NET

Puede obtener más información sobre la gestión de proyectos con Aspose.Tasks for .NET en la documentación.