2008-10-22 3 views
11

Когда я добавить ссылку на Microsoft.Office.Interop.Excel на моем компьютере, Visual Studio добавляет это к файлу проекта:Различные ссылки Interop на двух разных компьютерах, не работает

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

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

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

ответ

0

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

Вы, ребята, ссылаетесь на ту же версию excel (5.0 verses 11.0)? Вы, ребята, имеете ту же самую версию офиса, службы pakcs и все? Это может быть различие.

12

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

Обычно VS будет автоматически создавать сборку соединений для компонентов COM при добавлении ссылки на компонент. Однако, когда вы добавляете ссылку на один из компонентов Office (XP или любую более позднюю версию), ссылка на предварительно созданную (и оптимизированную) сборку первичного взаимодействия из Microsoft добавляется, как в вашем первом примере. Линия

<WrapperTool>primary</WrapperTool> 

означает, что этот PIA используется.

Если вы правильно добавили PIA ссылаться на CopyLocal свойства этой ссылки должно быть установлены в ложь и Путь свойства должно быть что-то вроде

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

Вы найдете некоторые подробности о сборках взаимодействия в этом MSDN article.

Чтобы получить первый метод работы, необходимо, чтобы на компьютере были установлены первичные сборщики Office (PIA). Существует распространяемая версия доступна от Microsoft:

AFAIK, этот PIAs только получить установленные настройки офиса, когда уже установлен .NET Framework, поэтому существует является отдельным перераспределяемым для PIA.

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

+1

Также обратите внимание, что в PIA содержится дополнительный код клея, который позволяет избежать утечек памяти/ресурсов, которые могут возникнуть при использовании сгенерированных сборок сборки. – 2010-01-25 15:00:17

0

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

Смежные вопросы