6

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

我希望有人可以为我提供此错误的解释,并在我的情况下提供可能的解决方法。

出了什么问题?

4

2 回答 2

2

看起来 ESRI dll 已嵌入您的程序集中。假设您正在使用 Visual Studio - 选择引用的 dll,并在其属性中将“嵌入互操作类型”设置为 False。

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

于 2013-12-12T13:01:13.160 回答
0

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

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass();

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory();

在这里https://stackoverflow.com/a/958952/1017722 Michael Petrotta 的回答解释了原因。

以下是类似的答案:不能嵌入互操作类型,不能嵌入类。请改用适用的接口

于 2014-01-06T15:46:04.013 回答