Ich versuche, das Projekt eines anderen zu kompilieren. Sie schrieben Code, der wie folgt aussieht:Office Interop-Konstruktor mit Argumenten
var doc = new Microsoft.Office.Interop.Word.Document(pathToFile);
ich es gut in Visual Studio 2010 kompilieren (wo es entwickelt wurde), aber wenn ich das gleiche Projekt in Visual Studio 2015 zu kompilieren, gibt es diesen Fehler:
'Document' does not contain a constructor that takes 1 arguments
In diesem Fall ist das Dokument eine Schnittstelle:
[Guid("0002096B-0000-0000-C000-000000000046")]
[CoClass(typeof(DocumentClass))]
public interface Document : _Document, DocumentEvents2_Event { }
Und die CoClass sieht wie folgt aus:
[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; }
...
}
Die Definitionen sehen in der Metadaten-Ansicht von beiden Versionen von Visual Studio identisch, und beide werden das Laden der Interop-Datei aus:
C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Word\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll
In keinem Fall hat Document einen Nicht-Standard-Konstruktor enthalten, aber es kompiliert in Visual Studio 2010.
Warum kompiliert es in 2010? Und warum, wenn es 2010 kompiliert wird, warum kompiliert es nicht mehr in 2015?
Und wie kann ich den äquivalenten Aufruf für Visual Studio 2015 finden, damit es funktioniert?
+1 für die Frage. Ich bin interessiert, die Antwort zu hören. Sind Sie sicher, dass es genau die gleiche Interop-Baugruppe verwendet? –
Ja, sie verwenden beide 15.0.0.071e9bce111e9429c vom GAC. –
Ich repro'd in VS 2010. Seltsam ... –