C#Visual Studio:如何让多个开发人员在引用Office的解决方案? [英] C# Visual Studio: How to have mulitple developers on a solution that references Office?

查看:316
本文介绍了C#Visual Studio:如何让多个开发人员在引用Office的解决方案?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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




  • 引用

  • 添加参考

  • 选择 COM选项卡

  • 选择 Microsoft Office 12.0对象库 / li>


出现奇异命名的引用:



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对象库

并重新添加COM引用:

  Microsoft Office 11.0对象库

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

  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因为Visual Studio无法解析对以下内容的引用:

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






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



我们如何参考Office开发人员在其计算机上构建的Office版本的内容?



我们有多个开发人员在引用Office的解决方案上工作吗?






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



这个问题涉及从Visual Studio试图使用Office的整套问题。这个问题只关注一个特定的问题。

解决方案

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


When i add a reference to Office COM Library, i to go:

  • References
  • Add Reference
  • Select the COM tab
  • Select Microsoft Office 12.0 Object Library

And magically named reference appears:

Microsoft.Office.Core

The Project.csproj file shows the details of the reference:

<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>

i check the project into source control, and now nobody else can build the solution; they do not have Office 12, they only have Office 11.

Another guy checks out the .csproj file, deletes the reference to:

Microsoft Office 12.0 Object Library

and re-adds the COM reference as:

Microsoft Office 11.0 Object Library

After that, and new reference appears in the Solution:

Microsoft.Office.Core

and the Project.csproj file shows the details of the reference:

<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>

Note: Readers who read the question will understand the problem. It's the same type library, but version 2.3 as opposed to version 2.4.

The project is then checked into source control, and now developers with Office 2007 (and Office 2000 for that matter) cannot build it, because Visual Studio cannot resolve the reference to:

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


We obviously need a version independant way to reference Office.

How do we reference the version of Office that the developer building it on his machine has intsalled?

How do we have multiple developers work on a solution that references Office?


Note: This question is identical to, but fundamentally different from, another Stackoverflow question How to use Office from Visual Studio C#?

That question deals with the entire set of problems from trying to use Office from Visual Studio. This question only focuses on one specific problem.

解决方案

Abstract your code so that ALL of the code that touches Office is in a separate project. Then you can have two projects - one for Office 11 and one for Office 12. Then reference both projects from your application. If the classes both implement a common interface, then you can use a factory pattern to instantiate the appropriate one and use the features without having to recompile.

这篇关于C#Visual Studio:如何让多个开发人员在引用Office的解决方案?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆