Я пытаюсь скомпилировать чужой проект. Они писали код, который выглядит следующим образом:Office Interop конструктор с аргументами
var doc = new Microsoft.Office.Interop.Word.Document(pathToFile);
я могу скомпилировать его хорошо в Visual Studio 2010 (где она была разработана), но когда я компилирую тот же проект в Visual Studio 2015, он дает эту ошибку:
'Document' does not contain a constructor that takes 1 arguments
В этом случае, документ представляет собой интерфейс:
[Guid("0002096B-0000-0000-C000-000000000046")]
[CoClass(typeof(DocumentClass))]
public interface Document : _Document, DocumentEvents2_Event { }
И CoClass выглядит следующим образом:
[ComSourceInterfaces("Microsoft.Office.Interop.Word.DocumentEvents2")]
[Guid("00020906-0000-0000-C000-000000000046")]
[TypeLibType(2), ClassInterface(0)]
public class DocumentClass : _Document, Document, DocumentEvents2_Event, DocumentEvents_Event
{
public DocumentClass();
[DispId(-2147418112)] public virtual string _CodeName { get; set; }
...
}
Определения выглядит идентично с точки зрения метаданных из обеих версий Visual Studio, и оба загрузки файла Interop из:
C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Word\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll
Ни в одном случае не DocumentClass содержит конструктор не по умолчанию, но он компилирует в Visual Studio 2010.
Почему он компилируется в 2010 году? И учитывая, что он компилируется в 2010 году, почему он больше не компилируется в 2015 году?
И как я могу найти эквивалентный вызов для Visual Studio 2015, чтобы заставить его работать?
+1 +1 вопрос. Мне интересно услышать ответ. Вы уверены, что использует ту же самую сборку? –
Да, они оба используют 15.0.0.0__71e9bce111e9429c из GAC. –
Я перепрограммировал в VS 2010. Strange ... –