Различные заявления об использовании в средах производства и разработки - PullRequest
0 голосов
/ 14 февраля 2009

У меня возникла досадная проблема в одном из моих проектов, где производственная среда использует Microsoft Office 2000, а у нас Microsoft Office 2003 только в среде разработки.

Я использую автоматизацию для некоторых манипуляций с документами Word, поэтому для выполнения этой работы как в рабочей среде, так и в среде разработки мне нужно поместить условный оператор компилятора в раздел using моего кода во всех файлах, использующих автоматизацию.

   #if DEVELOPEMENT 
   using Word = Microsoft.Office.Interop.Word;
   #else
   using Office;
   #endif

Редактировать. Я знаю, что очевидным решением является внедрение Microsoft Office 2000 в среду разработки, но это нелегко, если вы хотите сделать это легальным путем.

Я использую Visual Studio 2005, поэтому есть ли более элегантный способ избежать этого условного оператора компилятора?

Edit: решение с использованием инструмента TlbImp.exe из SDK работает прекрасно, вам просто нужно помнить, чтобы дать сгенерированному файлу строгое имя, генерируя ключевой файл с помощью инструмента sn.exe, иначе Visual Studio не скомпилирует решение:

"c:\...\SDK\v2.0\Bin\TlbImp.exe" "c:\...\Microsoft Office\Office10\MSWORD9.OLB" /keyfile:Office.snk /out:Office.dll

Ответы [ 3 ]

5 голосов
/ 14 февраля 2009

Попросите кого-нибудь найти установщик OFfice 2000 и запустить Office 2000 в разработку. Если у вас нет подобных сред, вы не можете быть уверены, что ваш код будет работать в производственном процессе.

2 голосов
/ 14 февраля 2009

Я бы, как правило, согласился с комментариями о том, что самым дешевым решением является установка той же версии офиса, в других случаях вам также необходимо решить эту проблему:

Вы можете создать интерфейс, обеспечивающий функциональность, необходимую для взаимодействия в офисе. Затем вы можете создать два отдельных модуля, реализующих один и тот же интерфейс, один в зависимости от Office 2000, другой в 2003 году. Возможно, вам следует поместить интерфейсы в третий модуль.

В коде вы можете создать экземпляр реализации по имени вместо обычного "new". Это означает, что вы можете просто переключать модули для разных офисных версий. Ваш основной проект может зависеть только от интерфейса (ов) и вообще не должен зависеть от офиса.

Office2000Module ----> Interfaces <------ Main application code
                         ^ 
                         |
Ofice 20003Module--------/
1 голос
/ 14 февраля 2009

Найдите компьютер, на котором установлены Office 2000 и .NET. Запустите на нем эту команду:

Tlbimp "c: ... \ msword.olb" /out:Word.dll

где ... каталог установки Office. Скопируйте Word.dll на ваши машины разработчика. Добавьте ссылку на него в свой проект, убедитесь, что для параметра «Копировать локально» установлено значение «Да» (по умолчанию). Теперь вы можете использовать «использование Word» для любой версии Office. Файл Word.dll должен быть развернут на целевом компьютере в том же каталоге, что и ваш .exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...