В документации AppRef CoClass говорится:
Обратите внимание, что вы можете использовать объект AppRef только в том случае, если ваш код выполняется внутри одного из процессов приложения ArcGIS.
Сообщения на форуме, кажется, подтверждают, что это та же самая ошибка, которая появляется при нарушении этого ограничения:
С http://forums.esri.com/Thread.asp?c=93&f=1729&t=217861:
Это мойпонимая, что действительно нет никакого способа получить доступ к экземпляру IApplication из скрипта геообработки.
Теоретически, если ваша задача - чисто геообработка, вы должны иметь возможность делать все это без доступа к объекту IApplication.
Похоже, что ОП вышеупомянутого сообщения на форуме удалось обойти их проблему, "используя IToolboxWorkspace и получая прямой доступ к Esri-toolboxes".Это был ее код:
public IGPTool GetTool(string _sToolName, string _sToolboxName)
{
IWorkspaceFactory pGPTFact;
IToolboxWorkspace pToolboxWorkspace;
IGPToolbox pGPToolbox;
IGPTool pGPTool;
pGPTFact = new ToolboxWorkspaceFactoryClass();
pToolboxWorkspace = pGPTFact.OpenFromFile(
ArcGISInstallFolder + @"\ArcToolbox\Toolboxes", 0) as IToolboxWorkspace;
pGPToolbox = pToolboxWorkspace.OpenToolbox(_sToolboxName);
pGPTool = pGPToolbox.OpenTool(_sToolName);
return pGPTool;
}
private string ArcGISInstallFolder
{
get
{
if (string.IsNullOrEmpty(this.m_sArcGISInstallFolder))
{
Microsoft.Win32.RegistryKey regkey;
regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
@"Software\ESRI\ArcGIS", false);
this.m_sArcGISInstallFolder = regkey.GetValue("InstallDir") as String;
}
return this.m_sArcGISInstallFolder;
}
}
Возможно, вы сможете достичь своей цели либо без объекта AppRef, либо запустив свой скрипт из приложения.