11

コンピューターにMicrosoft.Office.Interop.Excelへの参照を追加すると、Visual Studio はこれをプロジェクト ファイルに追加します。

<COMReference Include="Excel">
  <Guid>{00020813-0000-0000-C000-000000000046}</Guid>
  <VersionMajor>1</VersionMajor>
  <VersionMinor>5</VersionMinor>
  <Lcid>0</Lcid>
  <WrapperTool>primary</WrapperTool>
  <Isolated>False</Isolated>
</COMReference>

チームには別の開発者がいて、エラーが発生し、Interop.Excel.dll という名前のプロジェクトに DLL ファイルを追加する必要があります。これにより、プロジェクト ファイル内の上記のコードが次のコードに置き換えられます。

<Reference Include="Interop.Excel, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>My Project\Interop.Excel.dll</HintPath>
</Reference>

これは私のコンピューターで動作します。

2 つの方法の違い (どちらが最適か) と、最初の方法を他のコンピューターで動作させる方法を説明していただけますか?

4

3 に答える 3

12

あなたのアプローチにも問題はありません。

通常、コンポーネントへの参照を追加すると、VS は COM コンポーネントの相互運用アセンブリを自動的に生成します。ただし、Office コンポーネント (XP またはそれ以降のバージョン) の 1 つへの参照を追加すると、最初の例のように、Microsoft から事前に生成された (および最適化された) プライマリ相互運用機能アセンブリへの参照が追加されます。この線

<WrapperTool>primary</WrapperTool>

このPIAが使用されていることを意味します。

PIA 参照を正しく追加した場合、この参照のCopyLocalプロパティは false に設定され、Pathプロパティは次のようになります。

C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Excel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll

相互運用アセンブリの詳細については、この MSDN記事を参照してください。

最初の方法を機能させるには、Office Primary Interop Assemblies (PIA) がマシンにインストールされている必要があります。Microsoft から入手可能な再配布可能なバージョンがあります。

私の知る限り、これらの PIA は、.NET Framework が既にインストールされている場合にのみ Office セットアップによってインストールされます。そのため、PIA 用に個別の再配布可能ファイルがあります。

注: 対象とする Office のバージョンを参照していることを確認してください。ただし、複数のバージョンの Office をターゲットにすると、問題が発生する可能性があります。その場合の解決策は、遅延バインディングである可能性があります (パフォーマンスが問題にならない場合)。

于 2008-11-25T12:01:24.713 に答える
0

私は認めたい以上に Excel オートメーションを使用してきましたが、Interop.Excel.dll を参照したことはありません。私はいつも前者を参考にしています。なぜ彼はそれを参照しているのですか? また、どのようなエラーが発生しますか?

同じバージョンの Excel (5.0 対 11.0) を参照していますか? 皆さんは、まったく同じバージョンのオフィス、サービス パック、およびすべてを使用していますか? これが違いかもしれません。

于 2008-10-22T01:55:48.853 に答える
-1

これを使用する最もクリーンな方法を見つけました。これにより、複数のバージョンの相互運用も可能になり、共有 bin\Office Interop\11 または 12\Microsoft.Office.Interop.Excel.dll\ を作成し、それらをプロジェクトから参照することができます。異なるバージョンの御馳走を動作します

于 2008-11-25T12:16:23.170 に答える