2013-11-27 15 views
6

Tôi đã thêm một ứng dụng cho arcmap trong C# và tôi đã cố kết nối với File Geodatabase của tôi. Vì vậy, khi tôi cố gắng chạy nó tôi đã nhận lỗi này:"ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass" không thể được nhúng

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

và sau đó là con đường của tiện ích trong

Tôi chưa bao giờ thấy lỗi này trước và tôi đã tự hỏi điều gì đang xảy ra sai.

Đây là mã chính nó là tất cả về:

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

Vì vậy, lỗi là tại dòng này:

IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); 

Tôi hy vọng ai đó có thể cung cấp cho tôi một lời giải thích của lỗi này và cũng là một khả năng sửa chữa trong trường hợp của tôi.

Điều gì đang xảy ra?

+1

Cố gắng thay thế 'FileGDBWorkspaceFactoryClass' bằng' FileGDBWorkspaceFactory'. Tôi đoán có những câu hỏi như vậy, http://stackoverflow.com/questions/2483659/interop-type-cannot-be-embedded, http://stackoverflow.com/questions/4219605/class-cannot-be-embedded-use -the-apply-interface-thay vì –

+0

@ johny điều này đã sửa nó cho tôi. Nếu bạn có thể cung cấp câu trả lời này, tôi rất muốn chấp nhận nó. – Loko

Trả lời

2

Dường như dll ESRI được nhúng vào trong hình ảnh của bạn. Giả sử bạn đang làm việc với Visual Studio - Chọn dll được tham chiếu và trong thuộc tính của nó, hãy đặt "Nhúng loại Interop" thành False.

Lưu ý rằng điều này sẽ tạo ra một tập tin interop cho DLL mà bạn sẽ cần phải đặt bên cạnh lắp ráp của bạn.

Các vấn đề liên quan