我在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();
我希望有人可以向我提供此错误的解释,并在我的案例中提供可能的修复。
出了什么问题?
答案 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 embedded,Class cannot be embedded. Use the applicable interface instead。