2012-11-20 13 views
5

アドインでCreateRibbonExtensibilityObject()が呼び出されたときに、VSTOアドインでOffice/Excelのバージョンを確認したいと思います。私はこれで問題が発生している、と遭遇してきた:アドインのこれはアプリケーションが設定されている前にVSTO 4のOfficeバージョンを確認します。アプリケーションが

  • this.Applicationは、それはまだこの時点でVSTOで設定されていない、nullです。
  • CreateRibbonExtensibilityObject()の後に呼び出されます。

this.Application.Versionこの時点ではまだアドインが初期化されていないようです。 VSTOランタイムがアドインにCreateRibbonExtensibilityObject()を呼び出すときに、Excelのバージョン(12,14、または15)を判別する方法はありますか? ItemProviderインがインスタンス化されたことを見つける

UPDATE

、私は主要なオフィスのバージョンを取得するために、次を使用していました。

FieldInfo temp = this.ItemProvider.GetType().GetField("_officeVersion", BindingFlags.NonPublic | BindingFlags.Instance); 
uint officeVersion = (uint)temp.GetValue(this.ItemProvider); 

私はSliverNinjaの回答も受け入れています。

+0

[別の質問]への回答(https://stackoverflow.com/questions/28925050/how-to-know-which-word-version-is-installed-from-my-add-in- ribbon-with-c-shar)は、この質問の前提条件(起動方法では取得できないこと)が、アプリケーションレベルのアドインではもはや有効ではないことを示唆しています。私はスタートアップの方法でもドキュメントレベルのソリューションで試してみましたが、それは問題ありませんでした。 – Chris

+0

@Chris、これはこの質問とは関係ありません。 CreateRibbonExtensibilityObjectは、起動メソッドの前に呼び出されます。この質問は、起動メソッドの前にバージョンを取得する方法を具体的に尋ねました。 – Dan

+0

ああ、私の間違い。 – Chris

答えて

0

私はMainModuleFileVersionInfoを使用しています。私はこれがバージョン情報を抽出するためにファイルへのアクセスを節約することを願っています。

int majorVersion = Process.GetCurrentProcess().MainModule.FileVersionInfo.ProductMajorPart; 
関連する問題