在此之前确定VSTO 4中的Office版本.应用程序已设置

Dan*_*Dan 5 excel vsto ribbon office-interop c#-4.0

我想在Addin CreateRibbonExtensibilityObject()上调用VSTO Addin中的Office/Excel版本.我遇到过这个问题,遇到过:

  • 添加的this.Applicationnull,目前尚未由VSTO设置.
  • 在之后ThisAddIn_Startup(..)被称为CreateRibbonExtensibilityObject().

this.Application.Version尚未提供,因为此时Addin似乎尚未初始化.有没有办法在VSTO运行时调用Addin 时确定Excel(12,14或15)的版本CreateRibbonExtensibilityObject()

UPDATE

发现ItemProvider已实例化,我使用以下内容获取主要的Office版本.

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

我也接受了SliverNinja的回答.

Sli*_*SFT 5

您可以使用System.Diagnostics访问当前运行的Office进程(excel.exe),获取进程文件名(MainModule)的路径,然后使用FileInfoVersion确定主要产品版本.

int majorVersion = FileVersionInfo.GetVersionInfo(Process.GetCurrentProcess().MainModule.FileName).ProductMajorPart;
Run Code Online (Sandbox Code Playgroud)