सेट है, मैं CreateRibbonExtensibilityObject()
को एडिन पर कॉल करने पर VSTO Addin में Office/Excel का संस्करण निर्धारित करना चाहता हूं। मैं इस के साथ एक समस्या का सामना करना पड़ा है, और सामना करना पड़ा:इससे पहले वीएसटीओ 4 में कार्यालय संस्करण निर्धारित करें। आवेदन
- ऐड की
this.Application
null
है, यह अभी तक इस समय VSTO से सेट नहीं है। ThisAddIn_Startup(..)
कोCreateRibbonExtensibilityObject()
के बाद बुलाया जाता है।
this.Application.Version
अभी तक उपलब्ध नहीं है क्योंकि एडिन इस समय अभी तक शुरू नहीं हुआ है। क्या एक्स्टिन पर CreateRibbonExtensibilityObject()
पर VSTO रनटाइम कॉल करते समय Excel (12, 14, या 15) का संस्करण निर्धारित करने का कोई तरीका है?
अद्यतन
ढूँढना कि ItemProvider instantiated था, मैं प्रमुख कार्यालय संस्करण प्राप्त करने के लिए निम्न प्रयोग किया जाता है।
FieldInfo temp = this.ItemProvider.GetType().GetField("_officeVersion", BindingFlags.NonPublic | BindingFlags.Instance);
uint officeVersion = (uint)temp.GetValue(this.ItemProvider);
मैं स्लाइवरनिंजा के उत्तर को भी स्वीकार कर रहा हूं।
करने के लिए [एक और सवाल] जवाब (https://stackoverflow.com/questions/28925050/how-to-know-which-word-version-is-installed-from-my-add-in- रिबन-के-सी-shar) इस प्रश्न के आधार पर सुझाव देता है (कि इसे स्टार्टअप विधि में पुनर्प्राप्त नहीं किया जा सकता है) अब एप्लिकेशन-स्तरीय ऐड-इन के लिए मान्य नहीं है। मैंने स्टार्टअप विधि में दस्तावेज़-स्तर समाधान में भी कोशिश की, और यह ठीक था। – Chris
@ क्रिस, जिसका इस प्रश्न से कोई लेना-देना नहीं है। CreateRibbonExtensibilityObject को स्टार्टअप विधि से पहले बुलाया जाता है। इस प्रश्न ने विशेष रूप से स्टार्टअप विधि से पहले संस्करण को कैसे प्राप्त किया है। – Dan
आह, मेरी गलती। – Chris