我構建了一個引用COM互操作DLL的程序集。如果我通過在引用的屬性(VS2010)中將Embed Interop Types設置爲True來嵌入COM互操作類型,則在運行時發生錯誤「對象不包含get_Range的定義」。如果COM互操作類型沒有嵌入,則不會發生錯誤。互操作程序集嵌入到.NET 4.0中時Excel get_Range丟失
有沒有人知道爲什麼應該省略一個特定的方法,Worksheet.get_Range或者如何解決這個問題或者有其他相關的見解?我應該感謝任何幫助。
interop dll包含對Worksheet.get_Range(object,[object])的引用。在我的調用程序集上使用反射器時,沒有提及Worksheet下的get_Range。
我嵌入的互操作程序集是從Excel9.olb生成的。我沒有使用PIA,因爲該應用程序針對多個Excel版本。
MIKE,謝謝你的幫助。單參數方法不會得到運行時錯誤,顯然是一個很好的解決方法。我已向Microsoft 530769提交了一個錯誤報告。 – mikemay 2010-02-04 10:53:04
https://connect.microsoft.com/VisualStudio/feedback/details/530769/get-range-method-missing-with-embedded-interop-assembly?wa=wsignin1.0 – mikemay 2010-02-11 10:03:14
嗯,對,我在我以前的評論中發佈了一個不好的鏈接,謝謝你的糾正。這裏的討論非常有趣,而且很有意義。但是,請問,現在不是最簡單的解決方案,現在只需使用'worksheet.Range [「A1」]'語法而不是舊的'worksheet.get_Range(「A1」,Type.Missing)''使用C#4.0?你已經發現了一個非常有趣的好奇心,但是爲了修復它自己的代碼,使用新的語法看起來最簡單也是最好的 - 在任何情況下都更容易閱讀(按設計!)。 – 2010-02-11 13:41:09