2013-11-27 9 views
6

Ich habe eine Add-in-Anwendung für ARMAP in C# erstellt und versucht, eine Verbindung mit meiner File Geodatabase herzustellen. Also, wenn ich versuchte, es zu laufen habe ich diesen Fehler:"ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass" kann nicht eingebettet werden

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

und dann den Pfad des Add in

ich nie diesen Fehler gesehen haben, bevor und ich habe mich gefragt, was schief läuft.

ist Dies ist der Haupt-Code geht es um:

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

So ist der Fehler in dieser Zeile ist:

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); 

Ich hoffe jemand mir eine Erklärung für diesen Fehler zur Verfügung stellen kann und auch eine mögliche in meinem Fall beheben.

Was läuft falsch?

+1

Versuchen Sie, 'FileGDBWorkspaceFactoryClass' durch' FileGDBWorkspaceFactory' zu ersetzen. Ich denke, es gab solche Fragen, http://stackoverflow.com/questions/2483659/interop-type-cannot-be- embedded, http://stackoverflow.com/questions/4219605/class-cannot-be- embedded-use -die-anwendbare-Schnittstelle-stattdessen –

+0

@johny das reparierte es für mich. Wenn Sie dies als Antwort geben könnten, würde ich es gerne akzeptieren. – Loko

Antwort

2

Sieht aus wie die ESRI-DLL in Ihrer Assembly eingebettet wurde. Angenommen, Sie arbeiten mit Visual Studio - Wählen Sie die referenzierte DLL, und in seinen Eigenschaften set "Interop-Typen einbetten" auf False.

Beachten Sie, dass dies eine Interop-Datei für die DLL erstellen wird, die Sie neben Ihrer Assembly platzieren müssen.