Automation error при попытке создать .net-COM-объект
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.03.10 16:31
Оценка:
Создал COM-объект на дотнете (если интересно, то код можно найти здесь).

Сборку не подписывал (Snk-файла не создавал). в ГАК-е не регистрировал.

Пытаюсь создать экземпляр класса (RsdnMlAutomation) из VBA (Word 2003).

На локальной машине и другой машине (где стоят WinXP + VS 2008) куда все это дело проинсталлировано инсталлятором созданным из средствами VS2008 все ОК.

На двух других машинах, при попытке создать экземпляр RsdnMlAutomation (т.е. COM-объекта) VBA выдает сообщение об ошибке Automation error и не создает объект (ссылка остается пустой).

Собственно вопрос — куда копать?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Automation error при попытке создать .net-COM-объект
От: Mishka Норвегия  
Дата: 02.03.10 16:52
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Создал COM-объект на дотнете (если интересно, то код можно найти здесь).


VD>Сборку не подписывал (Snk-файла не создавал). в ГАК-е не регистрировал.


VD>Пытаюсь создать экземпляр класса (RsdnMlAutomation) из VBA (Word 2003).


VD>На локальной машине и другой машине (где стоят WinXP + VS 2008) куда все это дело проинсталлировано инсталлятором созданным из средствами VS2008 все ОК.


VD>На двух других машинах, при попытке создать экземпляр RsdnMlAutomation (т.е. COM-объекта) VBA выдает сообщение об ошибке Automation error и не создает объект (ссылка остается пустой).


VD>Собственно вопрос — куда копать?


Скопируй dll локально в тот же C:\temp, зарегестрируй (regasm xxx.dll /codebase) и всё будет работать.
Re[2]: Automation error при попытке создать .net-COM-объект
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.03.10 16:58
Оценка:
Здравствуйте, Mishka, Вы писали:

M>Скопируй dll локально в тот же C:\temp, зарегестрируй (regasm xxx.dll /codebase) и всё будет работать.


codebase — это ведь для подписанных сборок помещаемых в GAC. А без GAC-а никак?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Automation error при попытке создать .net-COM-объект
От: Mishka Норвегия  
Дата: 02.03.10 17:00
Оценка: 86 (1)
А, да, подписать сборку таки придётся и команда будет: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm RsdnMlAutomation.dll /codebase
Re[3]: Automation error при попытке создать .net-COM-объект
От: Mishka Норвегия  
Дата: 02.03.10 17:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Mishka, Вы писали:


M>>Скопируй dll локально в тот же C:\temp, зарегестрируй (regasm xxx.dll /codebase) и всё будет работать.


VD>codebase — это ведь для подписанных сборок помещаемых в GAC. А без GAC-а никак?


/codebase — Creates a Codebase entry in the registry. The Codebase entry specifies the file path for an assembly that is not installed in the global assembly cache. You should not specify this option if you will subsequently install the assembly that you are registering into the global assembly cache. The assemblyFile argument that you specify with the /codebase option must be a strong-named assembly.
Re[3]: Automation error при попытке создать .net-COM-объект
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.03.10 17:10
Оценка:
Здравствуйте, Mishka, Вы писали:

M>А, да, подписать сборку таки придётся и команда будет: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm RsdnMlAutomation.dll /codebase


Что-то кокос совсем не растет.

Даже при ручной регистрации сборки в ворде на другой машине не видно.

Уже даже создал пустую сборку на шарпе всего с одним интерфейсом и одним типом. И все равно ее не видать.

Я уже лет 5 с комом не трахался. Отвык от проблем даже. И тут на тебе, задница на ровном месте.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Automation error при попытке создать .net-COM-объект
От: Jolly Roger  
Дата: 02.03.10 17:33
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>На локальной машине и другой машине (где стоят WinXP + VS 2008) куда все это дело проинсталлировано инсталлятором созданным из средствами VS2008 все ОК.


VD>На двух других машинах, при попытке создать экземпляр RsdnMlAutomation (т.е. COM-объекта) VBA выдает сообщение об ошибке Automation error и не создает объект (ссылка остается пустой).


А код ошибки какой-нибудь к этой Automation error прилагается? И уточните пожалуйста, попытка пдключения идёт к локальному или удалённому серверу?
"Нормальные герои всегда идут в обход!"
Re[2]: Automation error при попытке создать .net-COM-объект
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.03.10 17:44
Оценка:
Здравствуйте, Jolly Roger, Вы писали:

VD>>На двух других машинах, при попытке создать экземпляр RsdnMlAutomation (т.е. COM-объекта) VBA выдает сообщение об ошибке Automation error и не создает объект (ссылка остается пустой).


JR>А код ошибки какой-нибудь к этой Automation error прилагается?


80131700 (шеснадцатиричный)

JR>И уточните пожалуйста, попытка пдключения идёт к локальному или удалённому серверу?


Не просто к локальному, а к инпроцесс-серверу, т.е. длл-и в том же адресном пространстве.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Automation error при попытке создать .net-COM-объект
От: HowardLovekraft  
Дата: 02.03.10 19:10
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>80131700 (шеснадцатиричный)

0x0x80131700 — CLR_E_SHIM_RUNTIMELOAD.
Из описания CorBindToRuntimeEx:

Если параметр pwszVersion задает несуществующую версию среды выполнения, функция CorBindToRuntimeEx возвращает HRESULT со значением CLR_E_SHIM_RUNTIMELOAD.

Так что копать куда-то в эту сторону.
З.Ы. Присоединюсь к рекомендации подписать COM-объект.
Re[4]: Automation error при попытке создать .net-COM-объект
От: HowardLovekraft  
Дата: 02.03.10 19:16
Оценка:
Дополнение.
Атрибут сборки
[assembly: ComVisible(false)]

Недавно наткнулся на такие грабли: COM-объект в сборке с ComVisible(false) видим, f.e., из Delphi, но в упор не видим из 1С (8.2). Изменение на true помогло. Причина такого поведения —
Re[3]: Automation error при попытке создать .net-COM-объект
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.03.10 19:20
Оценка:
Здравствуйте, Mishka, Вы писали:

M>А, да, подписать сборку таки придётся и команда будет: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm RsdnMlAutomation.dll /codebase


После подписания объект стал виден. Причем химии с другими каталогами не потребовалось.

Однако вылезла другая проблема.

Я использовал xsltc.exe для генерации сборки со скомпилированным XSLT, а эта утилита генерирует не подписанные сборки .

В рантайме происходит вылет.

Как это можно обойти? Может быть если грузить сборку динамически, то прокатит?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Automation error при попытке создать .net-COM-объект
От: hardcase Пират http://nemerle.org
Дата: 03.03.10 08:25
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я использовал xsltc.exe для генерации сборки со скомпилированным XSLT, а эта утилита генерирует не подписанные сборки .


VD>В рантайме происходит вылет.


VD>Как это можно обойти? Может быть если грузить сборку динамически, то прокатит?



А подписать сборку? (sn.exe)
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.