2013-11-27 23 views
6

我在C#中爲arcmap創建了一個附加應用程序,我嘗試連接到我的文件地理數據庫。所以,當我試圖運行它,我得到這個錯誤:「ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass」無法嵌入

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

,然後附加在

路徑我以前從來沒有見過這個錯誤,我想知道什麼錯誤。

這是主要的代碼,它是所有關於:

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

因此錯誤是在這一行:

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); 

我希望有人能提供我這個錯誤的解釋,也是一個可能的修復我的情況。

什麼問題?

+1

嘗試用'FileGDBWorkspaceFactory'替換'FileGDBWorkspaceFactoryClass'。我想有這樣的問題,http://stackoverflow.com/questions/2483659/interop-type-cannot-be-embedded,http://stackoverflow.com/questions/4219605/class-cannot-be-embedded-use -the-applicable-interface-instead –

+0

@johny這爲我修復了它。如果你可以提供這個答案,我很樂意接受它。 – Loko

回答

2

看起來像ESRI dll被嵌入到你的組件中。 假設您正在使用Visual Studio - 選擇引用的dll,並在其屬性中將「Embed Interop Types」設置爲False。

請注意,這將爲該DLL創建一個互操作文件,您需要將它放在裝配旁邊。