在此之前确定VSTO 4中的Office版本。应用程序已设置
我想在Addin上调用CreateRibbonExtensibilityObject()
时,确定VSTO Addin中Office / Excel的版本。 我遇到了这个问题,遇到了:
- 这个插件的应用是
null
,这个时候还没有被VSTO设置。 -
ThisAddIn_Startup(..)
在CreateRibbonExtensibilityObject()
之后被调用。
this.Application.Version
目前尚不可用,因为Addin似乎还没有初始化。 在VSTO运行时调用Addin中的CreateRibbonExtensibilityObject()
时,有没有办法确定Excel( 12,14或15 )的版本?
UPDATE
发现ItemProvider被实例化了,我用了以下来获得主要的办公版本。
FieldInfo temp = this.ItemProvider.GetType().GetField("_officeVersion", BindingFlags.NonPublic | BindingFlags.Instance); uint officeVersion = (uint)temp.GetValue(this.ItemProvider);
我也接受SliverNinja的回答。
您可以使用System.Diagnostics
访问当前运行的Office进程 ( excel.exe
),获取进程文件名 ( MainModule
)的path ,然后使用FileInfoVersion
确定主要的产品版本 。
int majorVersion = FileVersionInfo.GetVersionInfo(Process.GetCurrentProcess().MainModule.FileName).ProductMajorPart;
我正在使用MainModule
的FileVersionInfo
。 我希望这可以保存文件访问来提取版本信息。
int majorVersion = Process.GetCurrentProcess().MainModule.FileVersionInfo.ProductMajorPart;