2014-03-24 50 views
1

項目API允許你使用名單公佈出來的項目從MS Project 2010的API

ProjectDataSet data = client.ReadProjectList(); 
foreach (ProjectDataSet.ProjectRow projectRow in data.Project){...} 

這個API調用是有缺陷的,列出的項目,由於它返回從工作專賣店,而不是發表店內所有項目的事實。看起來像你希望檢查每個項目GUID對發佈的商店,這是非常緩慢。

int i = projectRow.PROJ_TYPE; 
if (i == 0){ 
    ProjectDataSet publishedProjectDataSet = client.ReadProject(projectRow.PROJ_UID, DataStoreEnum.PublishedStore); 
    if (publishedProjectDataSet == null) { continue; } 
} 

是否有人知道無論如何快速只列出已發佈的項目?

+0

我們使用數據庫查詢。我知道微軟不建議直接訪問他們的數據庫,但編寫一個簡單的select語句比使用API​​調用過度使用它更快更容易。 – melan

回答

2

projectClient.ReadProjectStatus應該工作。例如。

// Get list of all projects. 
SvcProject.ProjectDataSet projectDs = projectClient.ReadProjectStatus(
Guid.Empty, SvcProject.DataStoreEnum.PublishedStore, 
string.Empty, (int)PSLibrary.Project.ProjectType.Project); 

文檔位於here

+0

謝謝Appleman1234 - 完美的作品。 – BigBadOwl

相關問題