Разные ссылки Interop на двух разных компьютерах не работают - PullRequest
11 голосов
/ 22 октября 2008

Когда я добавляю ссылку на 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>

В команде есть другой разработчик, который получает ошибки и должен добавить в проект файл DLL с именем Interop.Excel.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>

Это работает на моем компьютере.

Не могли бы вы объяснить различия между двумя методами, который является лучшим, и как заставить первый работать на других компьютерах?

Ответы [ 3 ]

12 голосов
/ 25 ноября 2008

Я тоже не вижу проблем с вашим подходом.

Обычно VS автоматически создает сборку взаимодействия для компонентов COM, когда вы добавляете ссылку на компонент. Однако при добавлении ссылки на один из компонентов Office (XP или более поздней версии) ссылка на предварительно сгенерированную (и оптимизированную) первичную сборку взаимодействия от 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 (PIA). Существует распространяемая версия от Microsoft:

AFAIK, эти PIA устанавливаются программой Office только после установки .NET Framework, поэтому для PIA существует отдельное распространение.

Примечание. Обязательно укажите версию Office, на которую вы нацелены. Однако при нацеливании на несколько версий Office могут возникнуть некоторые проблемы. Решением в этом случае может быть позднее связывание (если производительность не является проблемой).

0 голосов
/ 25 ноября 2008

Я нашел самый чистый способ его использования, который также позволяет использовать несколько версий взаимодействия, - это создать общий bin \ Office Interop \ 11 или 12 \ Microsoft.Office.Interop.Excel.dll \ и ссылаться на них из проект, работает лакомство для другой версии

0 голосов
/ 22 октября 2008

Я использовал автоматизацию Excel больше, чем хотелось бы признать, и я никогда не ссылался на Interop.Excel.dll. Я всегда ссылался на первое. Почему он ссылается на это, и какие ошибки он получает?

Ребята, ссылаетесь ли вы на одну и ту же версию Excel (5.0, стихи 11.0)? Ребята, у вас точно такая же версия офиса, служебных пакетов и все такое? Это может быть разницей.

...