質問

しばらく前、私はVisual Studioベータ1でいくつかのWord相互運用例を作成し、 Microsoft.Office.Interop.Word への参照を埋め込みに設定しました("埋め込み相互運用タイプ" =参照プロパティでtrue)。これらは正常に機能し、しばらく実行していませんでした...今日まで。

もちろん、今はVisual Studio 2010と.NET 4.0の両方のベータ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();
    }
}

「相互運用型を埋め込む」とき、ほとんどの場合ほとんどの例外が発生します。が「true」に設定されているまたは、「/ l」とリンクします;コマンドラインで:

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

非常に時折、動作します-これはさらに奇妙です。

「埋め込み相互運用タイプ」を設定した場合" false" (または、/ lの代わりにコマンドラインで/ rを使用します)すべて正常に動作します。

" Visible = true"を削除すると、プロパティセッターも機能します...しかし、プロパティがあることは知っています ...それはIntelliSenseによっても示唆されています!

複数のボックスで徹底的なテストを行っていませんが、ネットブック(VistaではなくWindows 7を実行していますが、.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を別のステートメントで設定することです。これは正常に機能するはずです。

これに関するバグを記録しました。どうもありがとう!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top