我构建了一个引用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