我遇到了与Microsoft.Office.Interop.MSProject交谈有关的奇怪问题。我将MSProject 2013与Office.DLL v15和Microsoft.Office.Interop.MSProject.DLL v15一起使用。我们正在更新我们的程序,该程序在我们的产品和项目之间同步数据以使用最新的DLL,以支持MSProject 2013.我将附加代码图像,以便您可以看到我的内容看到。
我有一个局部变量,使用Interop类为项目赋值。
'汇编Microsoft.Office.Interop.MSProject C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Visual Studio Tools for Office \ PIA \ Office15 \ Microsoft.Office.Interop.MSProject.dll'
我正在寻找Project.ProjectStart中的值,当我使用监视窗口时显示一个值。
但是,当代码实际执行时,Project.ProjectStart的值= Null。
我检查过的事情:
这是一个绊脚石。如果你可以帮助我,我会给你买一个Mountain Dew;)
找到答案!!!
此解决方案适用于所有Office办公应用中的所有Microsoft.Office.Interop类似问题。
这是我在MSDN上开始的一个帖子,它找到了我的答案。 http://social.msdn.microsoft.com/Forums/office/en-US/079ed850-b8ee-4d5f-93ad-a31f6d9c2607/microsoftofficeinteropmsproject-throwing-systemnotimplementedexception?forum=officegeneral#079ed850-b8ee-4d5f-93ad-a31f6d9c2607
您是否尝试使用后期绑定技术(请参阅Type.InvokeMember)来获取值?有帮助吗?是!是和回答。 Type.InvokeMember有效。
以下是我现在用来访问这些成员的代码段。
public DateTime LateBindProjectStart()
{
try
{
if (project != null)
{
if (project is Microsoft.Office.Interop.MSProject.Project)
{
DateTime dtStart = (DateTime)(typeof(Microsoft.Office.Interop.MSProject.Project).InvokeMember(
"ProjectStart",
BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,
null,
project,
null));
return dtStart;
}
else
return DateTime.MinValue;
}
else
return DateTime.MinValue;
}
catch (Exception ex)
{
throw ex;
}
}