Как вызвать компонент печати COM в Silverlight - PullRequest
3 голосов
/ 14 декабря 2011

У моего приложения silverlight будет возможность печати, модуль печати будет создан в отдельном проекте csharp, и вызовите модуль с помощью этого кода:

m_ComPrinterContoller = AutomationFactory.CreateObject ("ComPrinter.Application");

Мой модуль печати является отдельным проектом c # и создаст, скажем, ComPrinter.dll, внутри него есть принтер по умолчанию и печать для каждой формы, которую нужно напечатать.

В ноутбуке для разработчиков я соберу модуль печати, а затем без проблем запустлю свое приложение, но на аппаратном компьютере это ошибка, сначала ошибка progId не зарегистрирована, поэтому я регистрирую ComPrinter.dll с помощью RegAsm, потому что я не могу зарегистрироваться он использует regsvr32, и теперь progId зарегистрирован, у меня есть имя dll в HKCR (я запускаю regedit и раскрываю HKEY_CLASSES_ROOT).

Теперь он уже зарегистрирован, но появляется новая ошибка, диалоговое сообщение: «ComAutomation_CreateInstance».

И когда я устанавливаю visualStudio и собираю проект ComPrinter, а затем запускаю свое приложение (не из Visual Studio, а непосредственно из приложения), и приложение запускается без проблем.

Что сделал .net при сборке и создании .dll? это своего рода регистрация .dll, но отличается от regsvr32 или regAsm. Или кто-нибудь когда-нибудь сталкивался с ситуацией? как зарегистрировать .Net dll COM и вызвать его из приложения silverlight, и запустить его не на компьютере разработчика

Есть похожая ссылка, которая задает тот же вопрос: http://support.leadtools.com/CS/forums/35174/PrintPost.aspx,, но на нее все еще нет ответа.

С уважением, Имам

1 Ответ

2 голосов
/ 24 января 2012

Используйте опцию Regasm / codebase, как сказал Ганс Пассант

...