C # Visual Studio: как привлечь нескольких разработчиков к решению, которое ссылается на Office? - PullRequest
3 голосов
/ 31 декабря 2008

Когда я добавляю ссылку на Office COM Library, я должен идти:

  • Рекомендации
  • Добавить ссылку
  • Выберите вкладку COM
  • Выбрать Библиотека объектов Microsoft Office 12.0

И появляется волшебно названная ссылка:

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

и повторно добавляет ссылку на COM как:

Microsoft Office 11.0 Object Library

После этого в решении появляется новая ссылка:

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 (и Office 2000 в этом отношении) не могут его построить, поскольку Visual Studio не может разрешить ссылку на:

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

Нам, очевидно, нужен независимый от версии способ обращения к Office.

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

Как несколько разработчиков работают над решением, которое ссылается на Office?


Примечание: Этот вопрос идентичен, но принципиально отличается от другого вопроса Stackoverflow Как использовать Office из Visual Studio C #?

Этот вопрос касается всего комплекса проблем, возникающих при попытке использовать Office из Visual Studio. Этот вопрос касается только одной конкретной проблемы.

Ответы [ 4 ]

5 голосов
/ 31 декабря 2008

Абстрагируйте ваш код так, чтобы ВСЕ код, касающийся Office, находился в отдельном проекте. Тогда у вас может быть два проекта - один для Office 11 и один для Office 12. Затем сделайте ссылку на оба проекта из вашего приложения. Если оба класса реализуют общий интерфейс, то вы можете использовать фабричный шаблон для создания экземпляра соответствующего и использовать функции без перекомпиляции.

1 голос
/ 31 декабря 2008

Возможно, вы сможете использовать позднюю привязку для этого.

Посмотрите здесь: http://www.hanselman.com/blog/BackToBasicsVarDim.aspx

или здесь: http://support.microsoft.com/kb/302902

0 голосов
/ 31 декабря 2008

Если вы абстрагируете интерфейс от отдельного проекта, вы можете использовать vb.net и встроенную поддержку позднего связывания для обеспечения функциональности и управления ресурсами.

0 голосов
/ 31 декабря 2008

позднее связывание с любой библиотекой типов и кодом со старыми интерфейсами - если вы используете интерфейсы v11, у вас должно быть все в порядке, когда у вас установлена ​​v12 на машине

...