2
我正在編譯別人的項目。他們寫的代碼看起來像這樣:帶參數的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 { }
而伴生類看起來是這樣的:
[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的兩個版本的元數據視圖相同,兩者都從加載互操作的文件:
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。我有興趣聽到答案。你確定它使用完全相同的互操作程序集嗎? –
是的,他們都使用GAC的15.0.0.0__71e9bce111e9429c。 –
我在VS 2010中聲明。奇怪的是...... –