не найден интерфейс

0 голосов
спросил 19 Май, 10 от boom (1,760 баллов) в категории Программные продукты Esri
Здравствуйте
(ArcGis 9.3, C#)
написал программку, которая правит поле в слое, отладил, работает. перенес на комп, где нет ArcGis, запускаю, коннект с базой устанавливается, но когда доходит до объявления
IWorkspaceEdit we = (IWorkspaceEdit)m_workspace
выдает такуб ошибку

Unable to cast COM object of type 'System.__ComObject' to interface type 'ESRI.ArcGIS.Carto.IFeatureLayer'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{861573B8-DE0E-46A-90A9-1E5ABD99A8B5}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))

вопрос: получается, что надо регистрировать этот интерфейс? если да, то например так

[ComUnregisterFunction()]
[ComVisible(false)]
 private static void ArcGISRegistration()
        {
string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", "861573B8-DE0E-46A-90A9-1E5ABD99A8B5");
MxCommands.Register(regKey);
}
и перед объявлением интерфейса вызвать ArcGISRegistration()?

тогда если так, то в regKey как правильно написать ключ?

спасибо

3 Ответы

0 голосов
ответил 19 Май, 10 от TDenis (42,620 баллов)
перенес на комп, где нет ArcGis

Должен быть установлен либо ArcGIS Desktop, либо хотя бы ArcGIS Engine Runtime.

http://proceedings.esri.com/library/userconf/devsummit09/tech/tech_58.html
http://gisupdates.esri.com/video/devsummit2010/DEV54.wmv
0 голосов
ответил 20 Май, 10 от boom (1,760 баллов)
ссылки сейчас посмотрю, спасибо, пока грузит.
тогда пока такой вопрос, если эта программка использовала версию 9.3, то ставить надо обязательно 9.3 ?
т.к. для 9.0 в developer kit, когда устанавливается, .Net нет (покрайней мере в дистрибутивах которые мне доступны) поэтому нужно ставить 9.3, так?
значит, получается так, если на компе нет ничего, то достаточно будет поставить Engine Runtime для 9.3?

0 голосов
ответил 20 Май, 10 от boom (1,760 баллов)
поменял muWorkspaceEdit.StartMultiuserEditing(esriMultiuserEditSessionMode.esriMESMVersioned);
на
workspaceEdit.StartEditing(false);

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