3


2

C#のVisual Studioは:どのようにOfficeを参照するソリューション上で複数の開発者を持つのですか?

Office COM Libraryへの参照を追加するときは、次のようにします。

  • 参考文献

  • 参照を追加

  • * COMタブを選択してください*

  • * Microsoft Office 12.0 Object Library *を選択します。

そして魔法のような名前の付いた参照が表示されます。

Microsoft.Office.Core

  • Project.csproj *ファイルに参照の詳細が表示されます。

   {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
   2
   4
   0
   primary
   False

私はプロジェクトをソース管理にチェックインしていますが、今では誰もそのソリューションを構築できません。彼らはOffice 12を持っておらず、Office 11しか持っていません。

別の人が.csprojファイルをチェックアウトし、次への参照を削除します。

Microsoft Office 12.0 Object Library

COM参照を次のように再追加します。

Microsoft Office 11.0 Object Library

その後、新しい参照がソリューションに表示されます。

Microsoft.Office.Core

そして `Project.csproj`ファイルは参照の詳細を表示します:

  {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
  2
  3
  0
  primary
  False

*注意:*質問を読んだ読者は問題を理解するでしょう。 これは同じタイプライブラリですが、バージョン2.4とは対照的にバージョン2.3です。

その後、プロジェクトはソース管理にチェックインされます。Office2007(およびそのことについてはOffice 2000)を使用している開発者は、プロジェクトをビルドできません。これは、Visual Studioが次の参照を解決できないためです。

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

'' '' '

Officeを参照するには、バージョンに依存しない方法が必要です。

自分のマシン上に構築した開発者がインストールしたバージョンのOfficeをどのように参照しますか?

複数の開発者がOfficeを参照するソリューションにどのように取り組んでいますか?

'' '' '

*注:*この質問は、他のStackoverflowの質問https://stackoverflow.com/questions/401637/how-to-use-off-visual-studio-c [Officeの使い方]と同じですが、根本的に異なります。 Visual Studio C#から?]

この質問では、Visual StudioからOfficeを使用しようとしたときの一連の問題について説明します。 この質問は1つの特定の問題にだけ焦点を合わせます。

4 Answer


5


Officeに関連するすべてのコードが別のプロジェクトに含まれるように、コードを抽象化します。 次に、Office 11用とOffice 12用の2つのプロジェクトを作成できます。 その後、アプリケーションから両方のプロジェクトを参照します。 両方のクラスが共通のインタフェースを実装している場合は、ファクトリパターンを使用して適切なインタフェースをインスタンス化し、再コンパイルすることなく機能を使用できます。


1


これには遅延バインディングを使用できます。

ここで見てみましょう:http://www.hanselman.com/blog/BackToBasicsVarDim.aspx

またはここ:http://support.microsoft.com/kb/302902


0


どちらのタイプライブラリが存在していても、それに遅れてバインドしたり、古いインタフェースに対してコーディングしたりする - v11インタフェースを使用しているのであれば、マシン上でv12を入手したら大丈夫です。


0


インターフェースを別のプロジェクトに抽象化した場合は、vb.netとそれに組み込まれた最新のバインディングサポートを使用して機能を提供し、リソースを管理できます。