문제

얼마 전, 나는 Visual Studio Beta 1에 몇 가지 Word Interop 예제를 작성하고 Microsoft.Office.Interop.Word 내장 (참조 속성에서 "Embed Interop 유형"= 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();
    }
}

내가 얻는 예외는 다음과 같습니다 대부분 당시 "Embed Interop 유형"이 "true"로 설정되거나 명령 줄에서 "/l"과 연결되는 경우

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

매우 가끔 작동합니다. 더 기괴합니다.

"Inved Interop 유형"을 "false"(또는 /l 대신 명령 줄에서 /r)로 설정하면 모두 정상적으로 작동합니다.

"Visive = true"속성 세터를 제거하면 작동합니다 ... 그러나 나는 알다 그 재산은 거기에 있습니다 ... 그것은 심지어 Intellisense가 제안합니다!

여러 상자에서 철저한 테스트를 수행하지는 않았지만 ~할 수 있다 내 넷북 (Vista 대신 Windows 7을 실행하지만 여전히 .NET 4.0 베타 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);

그러나 객체 이니셜 라이저가없는 별도의 명령문에서 visive = 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