gpt4 book ai didi

com - .NET 4.0 beta 2 中的 PIA 嵌入是否已损坏?

转载 作者:行者123 更新时间:2023-12-03 10:16:39 26 4
gpt4 key购买 nike

不久前,我在 Visual Studio beta 1 中编写了一些 Word 互操作示例,并将引用设置为 Microsoft.Office.Interop.Word要嵌入(在引用属性中设置“嵌入互操作类型”= true)。这些工作得很好,我已经有一段时间没有运行它们了......直到今天。

当然,现在我在 Visual Studio 2010 和 .NET 4.0 的 beta 2 下运行 - 它似乎有些损坏。

这是有问题的代码(只是虚拟示例代码):

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();
}
}

这是我大多数时候遇到的异常(exception)情况,当“嵌入互操作类型”设置为“true”或者我在命令行上与“/l”链接时:
System.MissingMethodException: Method not found:
'Void Microsoft.Office.Interop.Word._Application.set_Visible(Boolean)'.
at WordImprovement1.Main()

偶尔,它会起作用——这更奇怪。

如果我将“嵌入互操作类型”设置为“false”(或在命令行上使用/r 而不是/l),则一切正常。

如果我删除“Visible = true”属性 setter ,它也可以工作......但我知道该属性在那里......它甚至被IntelliSense建议!

虽然我还没有对多个机器进行详尽的测试,但我可以确认我的上网本(运行 Windows 7 而不是 Vista,但仍然是 .NET 4.0 beta 2)看到了同样的问题。

关于是我坏了还是 .NET 4.0 beta 2 有什么建议?

最佳答案

大收获!这看起来像是我们的索引属性代码生成中的一个错误(不是已知的错误,所以感谢您报告这个错误!)我已经尝试过 VS 2010 的最新内部版本,它也重现了。

发生的情况是,如果您使用对象初始值设定项,则会生成以下代码:

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

但是,如果您在单独的语句中设置 Visible = true(没有对象初始值设定项),则会发出以下代码:
Application application = (Application) Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("000209FF-0000-0000-C000-000000000046")));
application.Visible = true;

PIA 只定义底部的,因此当您使用对象初始值设定项时它会失败。现在的解决方法是在单独的语句中设置 Visible 应该可以正常工作。

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

关于com - .NET 4.0 beta 2 中的 PIA 嵌入是否已损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com