【问题标题】:C# Visual Studio: How to have multiple developers on a solution that references Office?C# Visual Studio:如何让多个开发人员使用引用 Office 的解决方案?
【发布时间】:2010-09-29 00:54:11
【问题描述】:

当我添加对 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>

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

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

Microsoft Office 12.0 Object Library

并将 COM 引用重新添加为:

Microsoft Office 11.0 Object Library

之后,新的引用出现在解决方案中:

Microsoft.Office.Core

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>

注意:阅读问题的读者会理解问题。它是同一个类型库,但版本是 2.3 而不是 2.4。

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

{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.3\0\primary

我们显然需要一种独立于版本的方式来引用 Office。

我们如何引用开发人员在其机器上构建的 Office 版本已安装?

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


注意:此问题与另一个 Stackoverflow 问题 How to use Office from Visual Studio C#?

相同,但根本不同

该问题涉及尝试从 Visual Studio 使用 Office 的所有问题。这个问题只关注一个特定的问题。

【问题讨论】:

    标签: com interop automation ms-office


    【解决方案1】:

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

    【讨论】:

    • 问题在于我们的解决方案在下一个版本的 Office 发布时将不起作用。
    • 肯定会的……你只需创建第三个项目。
    【解决方案2】:

    您也许可以为此使用后期绑定。

    看看这里:http://www.hanselman.com/blog/BackToBasicsVarDim.aspx

    或在这里:http://support.microsoft.com/kb/302902

    【讨论】:

      【解决方案3】:

      后期绑定到存在的任何类型库,并针对旧接口编写代码 - 如果您使用的是 v11 接口,那么当您在机器上安装 v12 时应该没问题。

      【讨论】:

        【解决方案4】:

        如果您将接口抽象为一个单独的项目,那么您可以使用 vb.net 及其内置的后期绑定支持来提供功能和管理资源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-17
          • 1970-01-01
          • 2013-07-22
          • 1970-01-01
          相关资源
          最近更新 更多