У меня возникла странная проблема, связанная с общением с Microsoft.Office.Interop.MSProject. Я использую MSProject 2013 с Office.DLL v15 и Microsoft.Office.Interop.MSProject.DLL v15. Мы обновляем нашу программу, которая синхронизирует данные между нашим продуктом и проектом, чтобы использовать последние библиотеки DLL для поддержки MSProject 2013. Я собираюсь приложить изображения кода, чтобы вы могли видеть то, что вижу я.
У меня есть локальная переменная, которой присваивается значение Project с помощью класса 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.
Что я проверил:
- Убедитесь, что все проекты построены на x86 и что проект, который я использую, - x86. Однако у меня 64-битная машина Win7. Может ли это быть проблемой x86 и x64 dll?
Это тупица. Я куплю тебе Mountain Dew, если ты поможешь мне ;)
ОТВЕТ НАЙДЕН!!!
Это решение применимо ко всем аналогичным проблемам 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;
}
}
mspData
? Можете ли вы получить какие-либо другие свойстваlocalProject
? - person Rachel Hettinger   schedule 05.08.2014