2009-06-02 21 views
14

Tôi muốn có một danh sách tất cả các chuỗi được sử dụng trong một assembly .NET bao gồm các giá trị “tĩnh” mà các biến cục bộ được thiết lập, các tham số được truyền cho các phương thức, các trường được đặt thành, v.v.Lấy tất cả các chuỗi tĩnh (interned) từ một assembly .NET (dll)

Tôi nhớ lại từ một cái gì đó mà tôi đã đọc từ lâu. chỉ đang mơ thôi?

Sử dụng .NET Reflector là một lý tưởng tốt (cảm ơn thijs), tôi cũng sẽ xem xét API của nó nếu không có ai đến với một công cụ đã được viết.

(Điều này là để tôi có thể viết một công cụ để kiểm tra chúng tôi không bỏ sót bất kỳ chuỗi nào cần dịch. Tôi có thể xử lý mã nguồn C#, tuy nhiên tôi sẽ phải đối phó với Chuỗi được chia thành nhiều dòng , vv)

Tôi vừa nghĩ, tôi muốn loại trừ các chuỗi được chuyển vào CodeFlowException(), v.v., vì vậy điều này đã trở nên phức tạp hơn.

PS: nếu bạn có thể nghĩ ra một bộ thẻ tốt hơn, vui lòng gắn thẻ lại câu hỏi này.

+0

Không cần phải viết một công cụ, đã tồn tại .... –

+0

Tôi cần một công cụ tùy chỉnh, vì tôi cần phải xử lý thêm trên các chuỗi khi tôi nhận được chúng. Tuy nhiên, tôi rất vui khi được cung cấp công cụ của tôi với một danh sách các chuỗi mà một công cụ khác xuất ra. –

+0

Hãy thử tải lắp ráp của bạn vào Reflector, nếu những gì phản xạ thấy là tốt (đủ) cho bạn sau đó bạn có thể truy cập nó bằng cách sử dụng System.Reflection quá. – thijs

Trả lời

0

Cuối cùng tôi đã viết một C rất đơn giản # phân tích cú pháp mà tìm thấy các chuỗi trong mã nguồn. Điều này đã giải quyết được vấn đề tôi có và cho phép tôi thêm “bình luận” vào chuỗi để giúp người dịch.

Các ý kiến ​​đã chỉ đọc từ C# comments trong một “định dạng kỳ diệu”

(Xin lỗi phân tích cú pháp là không tốt, đủ để cho phép bất cứ ai khác sử dụng nó, nó chỉ mới về công trình trên C cơ sở # mã của tôi)

12

Bạn có thể sử dụng công cụ SysInternals Strings để xem các chuỗi trong tệp thi hành và tệp đối tượng.

+0

Sử dụng công cụ này, bạn cũng sẽ nhận được nội dung như "!Chương trình này không thể chạy trong chế độ DOS "mà không được viết trong mã nguồn mà được trình biên dịch thêm vào. Bạn cũng sẽ nhận được các tài nguyên mã hóa và cơ sở mã hóa base64 nếu bạn không may mắn. Tất cả điều đó mang lại cho bạn nhiều công việc để tách rời khỏi crap các chuỗi thực tế bạn cần dịch. – thijs

2
+0

phản ánh? tại sao làm điều gì đó theo cách khó!) –

+0

vì "chuỗi" cũng cung cấp tất cả các chuỗi mà bạn không tự viết? (Chẳng hạn như tên hàm và biến) – thijs

+0

bạn don Không muốn bản địa hóa tên của các chức năng và biến số ... –

3

Đối với những người muốn trích xuất tất cả chuỗi người dùng từ hội đồng .NET (.exe hoặc .dll) Tôi đã viết simple utility có thể làm điều đó (tệp ExtractExeNetStrings2.zip). Tiện ích được viết bằng C#.

+0

Cảm ơn :) Đoạn trích tuyệt vời – MarcosMeli

+0

Gọn gàng nhưng tại sao nó nhận "hotovo ..." nhưng không phải ".txt.", "Ngoại lệ:", "nhấn phím ...", "#US", v.v ... từ chính bản thân bộ sưu tập của chính nó? –

+0

Liên kết không hoạt động nữa ... – TesX

1

Tiện ích C# đơn giản chiết xuất tất cả chuỗi người dùng từ một hội đồng .NET (.exe hoặc .dll) bằng cách kiểm tra các bit của tệp nhị phân.

Mã nguồn từ Câu trả lời của vladob hiện có thể được tìm thấy on github here. Liên kết từ câu trả lời gốc đã bị hỏng. vladob đã đồng ý với repost này. Thực ra tôi đã đồng ý với tôi.

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