我需要经常将所有项目的本地副本保存在Microsoft Project Online的PWA实例中。我有数百个,所以手动选择不是一种选择。
我已经能够使用Project Server CSOM and .NET连接到PWA实例并读取数据。但是我找不到Microsoft.ProjectServer.Client
命名空间中的方法来导出此数据并将其本地保存到任何MS Project可读文件中。
这甚至有可能吗?
或者,欢迎使用其他任何不涉及Project Server CSOM的方法来实现此目标。
编辑:我也尝试过通过Project Online REST API获取数据,因此我可以获得一个XML文件,可以将其用作MSPDI文件。但是MS Project Professional(桌面应用程序)和MPXJ library都无法识别它,我可能需要进行一些繁重的转换,但这并不能保证它甚至可以正常工作...
答案 0 :(得分: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来编译项目。