C#Visual Studio:如何让多个开发人员使用引用Office的解决方案?

Ian*_*oyd 3 com automation interop ms-office

当我添加对Office COM库的引用时,我去:

  • 参考
  • 添加参考
  • 选择COM选项卡
  • 选择Microsoft Office 12.0对象库

神奇命名的参考出现:

Microsoft.Office.Core

Project.csproj文件显示引用的详细信息:

<COMReference Include="Microsoft.Office.Core">
   <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
   <VersionMajor>2</VersionMajor>
   <VersionMinor>4</VersionMinor>
   <Lcid>0</Lcid>
   <WrapperTool>primary</WrapperTool>
   <Isolated>False</Isolated>
</COMReference>
Run Code Online (Sandbox Code Playgroud)

我将项目检查为源代码管理,现在没有其他人可以构建解决方案; 他们没有Office 12,他们只有Office 11.

另一个人检出.csproj文件,删除对以下内容的引用:

Microsoft Office 12.0 Object Library
Run Code Online (Sandbox Code Playgroud)

并重新添加COM引用:

Microsoft Office 11.0 Object Library
Run Code Online (Sandbox Code Playgroud)

之后,解决方案中出现新参考:

Microsoft.Office.Core
Run Code Online (Sandbox Code Playgroud)

并且Project.csproj文件显示了引用的详细信息:

<COMReference Include="Microsoft.Office.Core">
  <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
  <VersionMajor>2</VersionMajor>
  <VersionMinor>3</VersionMinor>
  <Lcid>0</Lcid>
  <WrapperTool>primary</WrapperTool>
  <Isolated>False</Isolated>
</COMReference>
Run Code Online (Sandbox Code Playgroud)

注意:阅读该问题的读者将理解该问题.它是相同的类型库,但版本2.3而不是版本2.4.

然后将项目检入源代码控制,现在使用Office 2007(以及Office 2000)的开发人员无法构建它,因为Visual Studio无法解析对以下内容的引用:

{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.3\0\primary
Run Code Online (Sandbox Code Playgroud)

我们显然需要一个版本独立的方式来引用Office.

我们如何引用开发人员在其计算机上构建它的Office版本?

我们如何让多个开发人员使用引用Office的解决方案?


注意:此问题与另一个Stackoverflow问题完全相同,但根本不同,如何从Visual Studio C#使用Office?

该问题涉及尝试从Visual Studio使用Office的所有问题.这个问题只关注一个具体问题.

Mic*_*ray 5

抽象您的代码,以便触及Office的所有代码都在一个单独的项目中.然后,您可以有两个项目 - 一个用于Office 11,另一个用于Office 12.然后从您的应用程序中引用这两个项目.如果类都实现了公共接口,那么您可以使用工厂模式来实例化相应的接口并使用这些功能而无需重新编译.