Vorrei determinare la versione di Office/Excel in un componente aggiuntivo VSTO quando CreateRibbonExtensibilityObject()
viene richiamato nell'addin. Ho incontrato un problema con questo, e ho incontrato:Determinare la versione di Office in VSTO 4. Prima dell'applicazione. L'applicazione è impostata
- la
this.Application
del componente aggiuntivo ènull
, ma non è ancora impostato per VSTO in questo momento. - il
ThisAddIn_Startup(..)
viene chiamato dopo ilCreateRibbonExtensibilityObject()
.
this.Application.Version
non è ancora disponibile poiché l'Addin sembra non ancora inizializzato in questo momento. C'è un modo per determinare la versione di Excel (12, 14 o 15) nel momento in cui il runtime VSTO chiama CreateRibbonExtensibilityObject()
sul componente aggiuntivo?
UPDATE
Trovare che l'ItemProvider è stato istanziato, ho usato il seguente per ottenere la versione principale ufficio.
FieldInfo temp = this.ItemProvider.GetType().GetField("_officeVersion", BindingFlags.NonPublic | BindingFlags.Instance);
uint officeVersion = (uint)temp.GetValue(this.ItemProvider);
Accetto anche la risposta di SliverNinja.
La risposta a [un'altra domanda] (https://stackoverflow.com/questions/28925050/how-to-know-which-word-version-is-installed-from-my-add-in- ribbon-with-c-shar) suggerisce che la premessa di questa domanda (che non può essere recuperata nel metodo di avvio) non è più valida per un componente aggiuntivo a livello di applicazione. L'ho provato anche in una soluzione a livello di documento nel metodo di avvio, e andava bene. – Chris
@ Chris, che non ha nulla a che fare con questa domanda. CreateRibbonExtensibilityObject viene chiamato prima del metodo di avvio. Questa domanda ha chiesto in particolare come ottenere la versione precedente al metodo di avvio. – Dan
Ah, mio errore. – Chris