- ЭСРИ.В ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass " не может быть встроен

Я сделал приложение add in для arcmap на C# и попытался подключиться к своей файловой базе геоданных. Поэтому, когда я попытался запустить его, я получил эту ошибку:

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 ответов


удалить Class суффиксом. Заменить

IWorkspaceFactory workspaceFactory = новый FileGDBWorkspaceFactoryClass();

С

IWorkspaceFactory workspaceFactory = новый FileGDBWorkspaceFactory();

здесь https://stackoverflow.com/a/958952/1017722 ответ Майкла Петротты объясняет, почему.

вот похожие ответы:тип взаимодействия не может быть встроенный, класс не может быть внедрен. Вместо этого используйте соответствующий интерфейс.


похоже, что dll ESRI была встроена в ваш assemly. Предполагая, что вы работаете с Visual Studio - Выберите библиотеку dll, на которую ссылаются, и в ее свойствах установите для" Embed Interop Types " значение False.

обратите внимание, что это создаст файл взаимодействия для этой DLL, который вам нужно будет поместить рядом с вашей сборкой.