2009-12-11 23 views
9

Tôi đang viết một plug-in cho một ứng dụng khác thông qua API. Các trình cắm thêm được phân phối một DLL. Có thể nhúng các tệp khác vào tệp DLL như pdf, hình ảnh, tệp trợ giúp chm, v.v. Tôi muốn có thể cung cấp tài liệu với trình cắm của tôi nhưng tôi vẫn muốn duy trì khả năng phân phối plugin -trong một tệp duy nhất, người dùng chỉ có thể kéo và thả vào ứng dụng để cài đặt.Tôi có thể nhúng các tệp khác vào một tệp DLL không?

Trả lời

15

Resource Files là những gì bạn cần.

+0

Cảm ơn bạn! –

+1

bạn nên giải thích cách thực hiện, không chỉ dán liên kết – Toolkit

+0

Liên kết bị hỏng! – LuizLoyola

0

Có, bạn có thể làm điều đó.

Thêm tệp tài nguyên vào dự án của bạn. Mở tệp tài nguyên trong Visual Studio và bấm Chèn tài nguyên. Bạn có thể chọn các loại tài nguyên khác nhau, bao gồm các tệp bên ngoài.

Visual Studio sẽ tạo mã cho bạn để bạn có thể truy xuất tệp dưới dạng mảng byte tại thời gian chạy từ tên của chúng thông qua số nhận dạng Resources.

6

Chắc chắn, bạn có thể nhúng tài nguyên vào tệp DLL của mình. Sau đó, khi chạy, bạn chỉ cần thực hiện:

Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("com.stackoverflow.plugin.example.Foo.pdf"); 

Điều này sẽ cung cấp cho bạn luồng vào tệp Foo.pdf được nhúng trong tệp DLL của bạn. Hãy chú ý đến thực tế rằng tên tài nguyên phải được phạm vi bởi không gian tên của loại mà từ đó bạn đang gọi phương thức.

4

Chắc chắn, chỉ cần biến chúng thành "Tài nguyên nhúng" trong VS.NET (giả sử bạn đang sử dụng nó). Sau đó, bạn có thể đọc chúng qua API tài nguyên hoặc chỉ đơn giản là với Assembly.GetManifestResourceStream().

0

Là tùy chọn thay thế, nếu bạn cần giải nén và lưu tệp trên máy người dùng (nói tệp chm bạn muốn truy cập bên ngoài ứng dụng), bạn cũng có thể thực hiện tương tự với tệp zip.

Bạn đã nói rằng bạn muốn tệp được "Kéo" vào ứng dụng của mình. Đơn giản chỉ cần có các sự kiện DDE của bạn kiểm tra xem tệp có phải là một tệp zip (thậm chí có thể sử dụng một cái gì đó giống như một lọ chứa siêu dữ liệu) và giải nén các tệp cần thiết, bao gồm cả plugin thực tế.

Đây cũng là ý tưởng tương tự như tài liệu openxml, chúng thực sự chỉ là ẩn trong ngụy trang.

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