2011-10-04 11 views
5

Tôi đang tìm cách khôi phục nguồn cho ứng dụng cho khách hàng của tôi. Tôi đã quản lý để khôi phục mã ứng dụng bằng cách sử dụng .NET Reflector. Nhưng bây giờ tôi muốn gọn gàng mã và tạo lại các biểu mẫu riêng lẻ để tôi có tệp codebehind, designer và resx cho mỗi biểu mẫu. Vấn đề là tất cả các hình ảnh được đặt trong các tệp ".resources". Làm thế nào để trích xuất hình ảnh từ các tập tin ".resources" được tạo ra bởi Reflector?Làm thế nào tôi có thể trích xuất hình ảnh từ tệp .resources được tạo bởi một biên dịch ngược của một assembly .NET?

Tôi muốn sử dụng một số công cụ hơn là phải trích xuất hình ảnh theo chương trình, nhưng tôi sẽ sử dụng mã nếu tôi không thể tìm thấy ứng dụng phù hợp. Vì vậy, ở đây tôi hy vọng rằng ai đó đã làm điều này trước hoặc biết về một người xem (tốt nhất là miễn phí!) Cho các tệp tài nguyên này sẽ cho phép tôi trích xuất các hình ảnh. Nếu không, mã cũng tốt; khi tôi có thể viết ứng dụng nhỏ của riêng tôi để trích xuất hình ảnh.

+0

Trình phản xạ cũng có thể thực hiện việc này, mở nút Tài nguyên của một hội đồng. Nhấp chuột phải vào tài nguyên và chọn Lưu dưới dạng. –

+0

Tôi đã cố gắng trích xuất các hình ảnh với Reflector, nhưng như xa như tôi có thể thấy, Reflector chỉ lưu các tập tin .resources, nó không cho phép bạn lưu các bitmap chứa trong các tập tin ở định dạng BMP ... trừ khi tôi đang thiếu một cái gì đó ? Nó cung cấp cho một danh sách các bitmap khi bạn chọn một tập tin .resources, nhưng khi tôi nhấp chuột phải vào bitmap, có một tùy chọn "lưu dưới dạng" đó là tiếc là màu xám. Có lẽ đây là một tính năng trong phiên bản trả tiền bị thiếu trong phiên bản dùng thử mà tôi đang sử dụng? – BruceHill

Trả lời

9
+2

Cảm ơn, sepulka. Tôi đã thử nghiệm chương trình mà bạn đã liên kết ở đây và nó hoạt động tốt. :) Tôi cũng tìm thấy chương trình này mà tôi đã sử dụng, http://jasonhaley.com/blog/post/2005/10/09/Resource-File-Extractor.aspx. Cảm ơn sự giúp đỡ của bạn về điều này. – BruceHill

+1

Thật không may là giải pháp lập trình không nhận ra dự án được xây dựng của tôi như là một hội đồng. Câu trả lời của Clive Tong đã làm việc cho tôi. –

+0

+1 - Dự án codeproject.com cũ (.NET 2.0 VS2008 PRK) - vì vậy hãy đảm bảo bạn cập nhật và biên dịch lại phiên bản .NET bạn đang sử dụng ngay bây giờ.Hoạt động hoàn hảo cho tôi trong VS2017 .NET 4.5. – MDV2000

7

ILSpy nên thực hiện công việc này - xem các tính năng tại http://wiki.sharpdevelop.net/ILSpy.ashx và ảnh chụp màn hình bên dưới.

screenshot

+1

Điều này chỉ cho phép bạn lưu tài nguyên dưới dạng tệp .resources. Theo như tôi có thể nói, nó không cho phép bạn trích xuất hình ảnh bitmap từ tệp tài nguyên. – BruceHill

+0

Thật lạ, ảnh chụp màn hình có nút Lưu cho mọi bitmap – poupou

+1

HI Poupou. Cảm ơn bạn đã cố gắng để giúp đỡ. Vâng, ảnh chụp màn hình đó là lừa đảo và làm cho nó trông giống như nó có thể, nhưng nó thực sự không cho phép bạn lưu hình ảnh được chứa trong một tập tin _.resources_. Trong trường hợp của tôi, nếu tôi chọn thư mục _resources_ như trong ảnh chụp màn hình, tôi sẽ nhận được danh sách các tệp tài nguyên, như mục nhập đầu tiên trong hình ảnh. Vì vậy, trong trường hợp của tôi, không ai trong số các mục được liệt kê là các tập tin BMP thực tế, nhưng các tập tin tài nguyên có chứa các bitmap. Nếu tôi xem các tệp tài nguyên trong Trình phản xạ, tôi có thể thấy danh sách các bitmap mà mỗi tệp chứa, nhưng không thể lưu các bitmap riêng lẻ này vào đĩa. – BruceHill

25

Bạn có thể lưu các tập tin .resources và sau đó sử dụng công cụ resgen (một phần của các công cụ VS2010) để chuyển đổi nó trở lại thành một file .resx, sử dụng một lệnh line like:

resgen foo.resources bar.resx 

Sau đó, .resx có thể được thêm vào dự án C#. Một khi bạn đã làm điều này, nếu bạn cố gắng để mở các hình ảnh cá nhân, VS2010 sẽ cung cấp để trích xuất chúng thành một tập tin hình ảnh độc lập.

+0

+1! [Phiên bản cộng đồng VS2013 miễn phí] (https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) cũng có thể mở các tệp .resx và trích xuất nội dung từ đó. – rustyx

-1

JustDecompile có thể thực hiện điều đó. Bạn có thể nhấp chuột phải vào một tài nguyên và chọn Lưu từ trình đơn ngữ cảnh.

+0

Đã thử, không. Nó chỉ hiển thị chúng như một chuỗi 'System.Byte []'. –