查找在Visual Studio中运行时在系统上安装的Microsoft Office版本

时间:2013-11-26 10:06:46

标签: c# .net visual-studio-2010 visual-studio-2012 build-process

我一般需要在Visual Studio中使用Microsoft Office模板提供一些帮助。

我的问题是我正在使用兼容的Visual Studio 2012或者说包含Microsoft Office 2010的模板。我想知道有没有办法在运行时找出在系统和构建上安装了哪个版本的MS Office因此。这意味着我想摆脱.csproj文件版本14.0到12.0的手动更改,以防我在Visual Studio 2012中开发MS Office 2007解决方案。在类似的行上,如果我在我的MS Office 2012上安装MS Office 2012,它会有所帮助机器和我可以使用仍然使用视觉工作室说2012年或2013年,以便与它一起工作。

我需要在csproj中手动更改它。请查看DebugInfoExeName,我将其从14.0更改为12.0。

 <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{BAA0C2D2-18E2-41B9-852F-F413020CAA33}">
        <ProjectProperties HostName="Excel" HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}" OfficeVersion="14.0" VstxVersion="4.0" ApplicationType="Excel" Language="cs" TemplatesPath="" DebugInfoExeName="#Software\Microsoft\Office\***12.0***\Excel\InstallRoot\Path#excel.exe" AddItemTemplatesGuid="{51063C3A-E220-4D12-8922-BDA915ACD783}" />
        <Host Name="Excel" GeneratedCodeNamespace="SiraExcelAddIn" IconIndex="0">
          <HostItem Name="ThisAddIn" Code="ThisAddIn.cs" CanonicalName="AddIn" CanActivate="false" IconIndex="1" Blueprint="ThisAddIn.Designer.xml" GeneratedCode="ThisAddIn.Designer.cs" />
        </Host>
      </FlavorProperties>
    </VisualStudio>

我想摆脱这个窗口,但不是手动。 enter image description here

2 个答案:

答案 0 :(得分:0)

查看此问题以确定安装了哪个版本的办公室

How to detect installed version of MS-Office?

答案 1 :(得分:0)

第一个选项,维护两个不同的.proj和.sln文件(一个用于版本12,一个用于14个)。

第二种疯狂的kludge方法如下。

向解决方案添加一个依赖的控制台应用程序项目,然后将该生成后事件添加到该项目并使其“始终”运行,在该生成后事件中执行控制台应用程序。

在控制台应用程序中包含用于检查是否安装了最高版本的Office的代码,并根据需要更新项目.proj文件(仅在有更改时更新,如果没有更改则不更新)。

首次构建将导致项目文件被更改,并且visual studio将在需要重新加载时提示,第二次构建将完全构建。

这摆脱了手动过程,但它仍然需要更改项目文件(如果您只是一直提交所有更改,可能会对您的svn / git repo造成破坏。)

您的另一个选择是尝试安装office 14 primary interop assemblies并查看是否允许您在未安装版本14的情况下进行构建。