Я написал управляемый конвертер файлов OpenXML в c #, но у меня проблемы с развертыванием.Для развертывания я использую VS Setup Project.
Наверное, мой первый вопрос: я вижу, что некоторые люди используют библиотеку классов, а другие используют приложение Windows в качестве COM-сервера.Есть ли предпочтения по любому из них?Мой конвертер имеет зависимости от библиотек не в GAC.
Когда дело доходит до регистрации COM-сервера, следующий пост: http://blogs.msdn.com/b/speront/archive/2009/04/17/9553717.aspx
предлагает добавить это в Main () управляемого EXE-файла:
Application.OleRequired();
MyConverter converter = new MyConverter();
Application.Run();
Который не будет работать для проекта установки.Это работает, хотя, если я сначала запустить EXE.
Я попытался запустить regasm:
regasm MyConverter.dll, что успешно, но когда Microsoft Word пытается использовать конвертер, я получаю сообщение об ошибке «Word не может запустить конвертер MyConverter Document»
Затем я попытался создать приложение Windows и использовать:
public static void Main(string[] args)
{
Guid guid = new Guid("EFADDB5B-933E-49FE-B3C8-F6FD7FB1B788");
RegistrationServices regSrv = new RegistrationServices();
regSrv.RegisterTypeForComClients(typeof(MyConverter), ref guid);
}
Наконец, я попытался:
regasm /regfile:test.reg MyConverter.dll
и затем импортировать файл реестра.
Все они дают ошибку: «Word не может запустить конвертер MyConverter Document»
У меня есть правильные записи реестра для моего конвертера в Office \ 12.0 \ Word \ Text Converters \ OOXML Converters \Импорт
Конвертер успешно работал.Просто развертывание не работает ни при каких условиях.