سؤال

وقبل فترة، كتبت بعض الأمثلة إمكانية التشغيل المتداخل كلمة في Visual Studio بيتا 1، وتعيين المرجع إلى Microsoft.Office.Interop.Word لتكون جزءا لا يتجزأ (تعيين "أنواع تضمين إمكانية التشغيل المتداخل" = True في خصائص المرجع). هذه سار على ما يرام، وأنا لم تشغيلها لفترة من الوقت ... حتى اليوم.

وبطبيعة الحال، الآن أنا على التوالي تحت بيتا 2 من كلا البصرية ستوديو 2010 و. 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();
    }
}

وهنا استثناء أحصل <م> أكثر في ذلك الوقت، عندما يتم تعيين "أنواع تضمين إمكانية التشغيل المتداخل" إلى "true" أو I ربط مع "/ لتر" في سطر الأوامر:

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

وجدا في بعض الأحيان، وأنها تعمل - الذي هو أكثر غرابة

إذا أنا وضعت "أنواع تضمين إمكانية التشغيل المتداخل" إلى "false" (أو استخدام / r على سطر الأوامر بدلا من / لتر) كل شيء يعمل بشكل جيد.

إذا كنت إزالة "المرئية = الحقيقية" اضع الملكية يعمل أيضا ... ولكن أنا <م> معرفة أن العقار هناك ... انها حتى اقترحه التحسس!

وبينما أنا لم تفعل اختبار شامل على صناديق متعددة، I <م> يمكن تأكيد أن بلدي النت (تشغيل ويندوز 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);

ولكن إذا قمت بتعيين المرئية = صحيح في بيان منفصل (بدون مهيئ الكائن)، ثم ينبعث التعليمات البرمجية التالية:

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

ووPIA يعرف فقط واحد أسفل، وبالتالي فإنه يفشل عندما كنت تستخدم مهيئ الكائن. الحل في الوقت الراهن هو وضع مرئي في بيان منفصل التي يجب أن تعمل بشكل جيد.

ولقد تسجيل دخول علة حول هذا الموضوع. شكرا مرة أخرى!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top