前一段,我写在Visual Studio中的β1某些Word互操作示例,并且(在参考属性中设置的“嵌入互操作类型” =真)设置基准以Microsoft.Office.Interop.Word要被嵌入。这些工作得很好,我也没有运行一段时间,他们...直到今天。

当然,现在我都下的Visual Studio 2010的Beta 2的运行和.NET 4.0 - 这似乎是有点破

下面是有问题的代码(只是虚设例如代码):

using Microsoft.Office.Interop.Word;

class WordImprovement1
{
    static void Main()
    {
        Application app = new Application { Visible = true };
        app.Documents.Add();
        Document doc = app.ActiveDocument;            
        Paragraph para = doc.Paragraphs.Add();
        para.Range.Text = "Thank goodness for C# 4";

        object filename = "demo.doc";
        object format = WdSaveFormat.wdFormatDocument97;
        doc.SaveAs(FileName: ref filename, FileFormat: ref format);
        doc.Close();
        app.Quit();
    }
}

这里是例外,我得到的的时候,当“嵌入互操作类型”设置为“真”或者我在命令行上“/ L”链接:

System.MissingMethodException: Method not found:
'Void Microsoft.Office.Interop.Word._Application.set_Visible(Boolean)'.
   at WordImprovement1.Main()

非常偶尔,它工作 - 这是更离奇

如果我设置“嵌入互操作类型”为“假”(或使用/ R命令行而不是/升上)这一切工作正常。

如果我删除“可见= TRUE”的属性设置它的作品太...但我的知道的那个属性的存在......它甚至通过智能感知提示!

虽然我没有做过详尽的测试在多个盒子,我的可以的确认我的上网本(运行Windows 7而不是Vista的,但还是.NET 4.0 Beta 2中)看到了同样的问题。

任何建议,它是否是我那碎或.NET 4.0的β2?

有帮助吗?

解决方案

大有赶超!这看起来就像在我们的代码生成索引属性的错误(不是一个已知的一个,十分感谢报告此!)我试过在VS 2010的最新的内部构造和它再现为好。

所发生的是,如果使用一个对象初始化,则产生以下代码:

Application <>g__initLocal19 = (Application) Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("000209FF-0000-0000-C000-000000000046")));
<>g__initLocal19.set_Visible(true);

但是如果设置可见=真在一个单独的语句(没有对象初始化),然后将下面的代码被发射:

Application application = (Application) Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("000209FF-0000-0000-C000-000000000046")));
application.Visible = true;

在PIA只定义了一个底部,因此它当您使用的对象初始化失败。对于现在的解决方法是设置可见在一个单独的声明,应该很好地工作。

我已经记录了这个错误。再次感谢!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top