2013-11-27 19 views
6

Ho creato un'applicazione aggiuntiva per arcmap in C# e ho provato a connettermi con il mio file Geodatabase. Così, quando ho provato a farlo funzionare ho ottenuto questo errore:"ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass" non può essere incorporato

Error 1 Interop type 'ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass' cannot be embedded. Use the applicable interface instead. 

e quindi il percorso del componente aggiuntivo in

Non ho mai visto questo errore prima e mi chiedevo che cosa sta andando male.

Questo è il codice principale è tutta una questione:

public IWorkspace FileGdbWorkspaceFromPropertySet(string database) 
    { 
     IPropertySet propertySet = new PropertySetClass(); 
     propertySet.SetProperty("DATABASE", database); 
     IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); 
     return workspaceFactory.Open(propertySet, 0); 
    } 

Quindi l'errore è in questa linea:

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); 

Spero che qualcuno mi può fornire una spiegazione di questo errore e anche una possibile risolvere nel mio caso.

Cosa non va?

+1

Provare a sostituire 'FileGDBWorkspaceFactoryClass' con' FileGDBWorkspaceFactory'. Immagino che ci fossero tali domande, http://stackoverflow.com/questions/2483659/interop-type-cannot-be-embedded, http://stackoverflow.com/questions/4219605/class-cannot-be-embedded-use -l'interfaccia-applicabile-invece –

+0

@johny questo lo ha risolto per me. Se potessi fornire questa risposta come risposta, mi piacerebbe accettarla. – Loko

risposta

2

Sembra che la DLL di ESRI sia stata incorporata nel vostro assemly. Supponendo che si stia lavorando con Visual Studio - Selezionare la DLL di riferimento e nelle sue proprietà impostare "Incorpora tipi di interoperabilità" su False.

Si noti che questo creerà un file di interoperabilità per quella DLL che sarà necessario inserire accanto all'assieme.