无法嵌入“ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass”

时间:2013-11-27 10:10:44

标签: c# arcgis esri arcobjects

我在C#中添加了arcmap的应用程序,我尝试连接我的文件地理数据库。所以当我试图运行它时,我收到了这个错误:

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();

我希望有人可以向我提供此错误的解释,并在我的案例中提供可能的修复。

出了什么问题?

2 个答案:

答案 0 :(得分:2)

看起来ESRI dll嵌入在你的组件中。 假设您正在使用Visual Studio - 选择引用的dll,并在其属性中将“Embed Interop Types”设置为False。

请注意,这将为该DLL创建一个interop文件,您需要将其放在程序集旁边。

答案 1 :(得分:0)

您可以尝试删除Class后缀。 替换

  

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass();

  

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory();

这里https://stackoverflow.com/a/958952/1017722 Michael Petrotta的答案解释了为什么。

以下是类似的答案:Interop type cannot be embeddedClass cannot be embedded. Use the applicable interface instead