Зарегистрировал сборку для COM, но работает только на компьютере разработчика - PullRequest
0 голосов
/ 17 февраля 2011

Привет, мне было интересно, ребята, видите ли вы, что не так / предложите решение.

У меня есть сборка dll для COM, которую я создал с помощью C #, и я пытаюсь получить COM-объект из Silverlight вне браузера. Я хочу, чтобы приложение siverlight было мобильным между компьютерами, поэтому я поместил все необходимые файлы в zip-файл вместе с пакетным установщиком, который выполняет следующие действия для регистрации сборки:

cd% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ RegAsm.exe "% USERPROFILE% \ Мои документы \ Часы домашней работы \ windowsHook.dll" / tlb / nologo

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

Однако, когда я перестраиваю сборку с C # на тестовом компьютере и заменяю dll, которую я перенес с компьютера разработчика, на перестроенную dll, приложение находит это нормально. Моим клиентам было бы удобно, если бы им не нужно было перестраивать сборку с использованием C #, если они хотят использовать мое приложение, поэтому мне было интересно, есть ли способ исправить это.

Я некоторое время изучал эту проблему и думал, что это может быть из-за того, что моя сборка не была сборкой со строгим именем, поскольку я думаю, что C # делает это автоматически, поэтому я попытался сделать это в моем пакетном файле, и он не смог распознать команды 'al' и 'sn', необходимые для генерации криптографического ключа, чтобы дать сборке строгое имя, и я попытался сделать это в вкладка «подпись» в свойствах проекта C #, но я столкнулся с той же проблемой. Есть идеи как это исправить?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Причина, по которой он работает при перестройке с VS, заключается в том, что он запускает Regasm.exe с параметром / codebase.Требуется, если вы не планируете помещать сборку в GAC.

0 голосов
/ 17 февраля 2011

C # автоматически не дает строгим названиям сборки.Если вы используете Visual Studio, откройте страницу свойств проекта и найдите вкладку «Подписание».Установите флажок Подписать сборку и создайте новый файл ключа строгого имени.Создайте свой проект, и вы сможете делать то, что вам нужно, с существующим командным файлом.

...