Project Online 和 Project Server 是 Microsoft 提供的功能丰富的项目和项目组合管理解决方案。这两种解决方案都为创建和管理项目提供了几乎相似的功能范围,但是,它们根据哪种解决方案非常适合您的要求而有所不同。例如,如果您想要对硬件和软件有更多控制的本地解决方案,那么您可以选择 Project Server。另一方面,Project Online 用作 Project Server 的基于云的实例,无需您自己的基础结构。
有时可能需要从应用程序中访问 Project Server/Online 中的项目信息。为了处理这种情况,在本文中,我将向您展示如何使用 C# 在您的 .NET 应用程序(ASP.NET 等)或 Web 服务中在 Project Server 或 Project Online 上创建/读取项目。 .
用于 Project Server/在线的 C# API
为了创建新项目并从 Project Server/Online 读取现有项目,我们将使用 Aspose.Tasks for .NET。它是一个跨平台的类库,用于在 .NET Standard 或 .NET Core 应用程序中以编程方式读写 MS Project 文件。该 API 托管在 NuGet 上,并且在 下载 部分中以 MSI 包和压缩 DLL 的形式提供。
使用项目服务器
在本节中,我将向您展示如何连接到 Project Server 并读取或创建项目。为了连接到 Project Server,您需要了解以下详细信息:
- Project Server 的 URL 即 https://contoso.sharepoint.com
- 域即 contoso.com
- 用户名
- 密码
在 C# 中从 Project Server 读取项目
以下是连接到 Project Server 并从中检索项目列表的步骤。
- 实例化 NetworkCredential 类并使用凭据对其进行初始化。
- 创建一个 ProjectServerCredentials 类的对象,并使用项目服务器的 URL 和 NetworkCredential 对象对其进行初始化。
- 创建 ProjectServerManager 类的对象并使用 ProjectServerManager.GetProjectList() 方法获取项目列表。
以下代码示例显示如何使用 C# 从 Project Server 读取项目。
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);
}
在 C# 中的 Project Server 上创建项目
在 Project Server 上创建项目非常简单。只需以与上一个示例相同的方式连接到 Project Server,使用 Project 类加载项目文件 (.mpp) 并调用 ProjectServerManager.CreateNewProject() 方法。
以下代码示例展示了如何使用 C# 在 Project Server 上创建新项目。
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,您需要了解以下详细信息:
- 网址
- 用户名
- 密码
在 C# 中从 Project Online 中读取项目
以下是从 Project Online 读取项目的步骤:
- 使用 ProjectServerCredentials 设置连接到 Project Online 的凭据。
- 创建并初始化 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);
// 使用原始项目数据
}
使用 C# 在 Project Online 上创建项目
以下是在 Project Online 上创建新项目的步骤:
- 使用 ProjectServerCredentials 设置连接到 Project Online 的凭据。
- 使用 Project 类加载项目文件 (.mpp)。
- 创建并初始化 ProjectServerManager 对象。
- 使用 ProjectServerManager.CreateNewProject() 方法创建项目。
以下代码示例演示如何使用 C# 在 Project Online 上创建新项目。
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 for .NET
您可以从 文档 中了解更多关于使用 Aspose.Tasks for .NET 进行项目管理的信息。