1

我需要经常在 Microsoft Project Online 上保存存储在我的 PWA 实例中的所有项目的本地副本。我有数百个,所以手动操作不是一种选择。

我已经能够使用Project Server CSOM 和 .NET连接到 PWA 实例并读取数据。但是我在命名空间中找不到Microsoft.ProjectServer.Client导出这些数据并将其本地保存到任何 MS Project 可读文件的方法。

这甚至可能吗?

或者,欢迎任何其他不涉及 Project Server CSOM 的方式来实现这一点。

编辑:我还尝试通过 Project Online REST API 获取数据,所以我可以获得一个 XML 文件,我可以像使用 MSPDI 文件一样使用它。但是 MS Project Professional(桌面应用程序)和MPXJ 库都不能识别它,我可能需要进行一些繁重的转换,这并不能保证它甚至可以工作......

4

1 回答 1

1

最后我决定走“丑陋但有效”的方式,直接告诉MS Project桌面客户端连接,打开并在本地保存项目,并带有一些C#代码:

private static void start()
{
    var objProcess = Process.Start(@"winproj.exe", "/s https://PWA-URL");
}

static void Main(string[] args)
{
    var backgroundThread = new Thread(new ThreadStart(start));
    backgroundThread.Start();
    Thread.Sleep(10000);

    ApplicationClass objProject = new ApplicationClass
    {
        Visible = false
    };

    object oMissing = System.Reflection.Missing.Value;
    object oFile = @"<>\test-project";
    object oFormat = "MSProject.mpp";
    object oReadOnly = true;
    objProject.DisplayAlerts = false;

    objProject.FileOpen(oFile, oReadOnly, PjMergeType.pjDoNotMerge, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oFormat, oMissing, PjPoolOpen.pjPoolReadOnly, oMissing, oMissing, oMissing, oMissing);
    objProject.FileSaveAs(@"C:\Windows\Temp\LocalCopy.mpp");
    objProject.Quit(PjSaveType.pjDoNotSave);
}

Windows 凭据用于连接到 PWA,虽然可以指定不同的用户和密码,但我没有尝试过(ApplicationClass.FileOpen)。

还应该导入 Microsoft.Office.Interop.MSProject.dll 来编译项目。

于 2019-08-14T13:59:58.560 回答