Tóm tắtLàm cách nào để gỡ lỗi vào một hội đồng được ILMerg?
Tôi muốn thay đổi quá trình xây dựng một giải pháp 2-lắp ráp, như vậy mà một cuộc gọi đến ILMerge được gọi, và xây dựng kết quả trong một hội duy nhất. Hơn nữa tôi muốn có thể gỡ lỗi vào lắp ráp kết quả.
Chuẩn bị - Một ví dụ đơn giản
- Giải pháp mới - ClassLibrary1
- Tạo một hàm tĩnh 'GetMessage' trong Class1 mà trả về chuỗi "Hello world"
- Tạo ứng dụng giao diện điều khiển mới mà tài liệu tham khảo ClassLibrary.
- Xuất GetMessage từ main() thông qua bảng điều khiển.
Bây giờ bạn có một ứng dụng lắp ráp 2 kết quả là "Hello World" cho bảng điều khiển.
Vậy điều gì tiếp theo ..?
Tôi muốn thay đổi Console quá trình ứng dụng xây dựng, bao gồm một bước bài xây dựng trong đó sử dụng ILMerge, để hợp nhất lắp ráp ClassLibrary vào lắp ráp điều khiển
Sau bước này, tôi sẽ có thể:
- Chạy ứng dụng điều khiển trực tiếp với không ClassLibrary1.dll hiện
- Chạy ứng dụng điều khiển thông qua F5 (hoặc F11) trong VS và có thể gỡ rối vào nhau của 2 dự án.
TNHH Success
tôi đọc this blogpost và quản lý để đạt được merge tôi là sau khi có một hậu build lệnh của ...
"$(ProjectDir)ILMerge.bat" "$(TargetDir)" $(ProjectName)
... và một ILMerge. tập tin bat đọc ...
CD %1
Copy %2.exe temp.exe
ILMerge.exe /out:%2.exe temp.exe ClassLibrary1.dll
Del temp.exe
Del ClassLibrary1.*
Điều này hoạt động khá tốt và thực tế là chuyên nghiệp duce một exe chạy bên ngoài môi trường VS theo yêu cầu. Tuy nhiên nó không xuất hiện để tạo ra các biểu tượng (tệp .pdb) mà VS có thể sử dụng để gỡ lỗi vào mã.
Tôi nghĩ đây là phần cuối cùng của câu đố.
Có ai biết cách tôi có thể thực hiện tác phẩm này không?
FWIW Tôi đang chạy VS2010 trên máy x64 Win7 x64.
Cập nhật: Tại sao tôi muốn thực hiện việc này?
Đã được hỏi: 'Tôi có thực sự cần ILMerge trong trường hợp gỡ lỗi không?'
Các hội của giải pháp của tôi sẽ cần phải cùng tồn tại trong cùng một thư mục như những giải pháp khác (một số trong đó tôi có khả năng sẽ phát triển)
Một số các giải pháp này sẽ chia sẻ phụ thuộc vào phiên bản khác nhau của một số hội.
Vì vậy, Solution1 có thể được tạo thành từ Console1 và ClassLibrary1.dll (v1) và Solution2 có thể được tạo thành từ Console2 và Classlibrary1.dll (v2).
Thay vì đăng ký mọi thứ trong GAC, tôi nghĩ tôi có thể ILMerge phiên bản chính xác của sự phụ thuộc vào lắp ráp chính của giải pháp để tránh va chạm.
Tuy nhiên, điều này hiện tại không thể gỡ lỗi giải pháp mà tôi cần phải thực hiện cùng với các giải pháp khác sẽ có mặt.
Âm thanh này có phức tạp không? Đó là bởi vì nó là ..: D
Thay vì có tập lệnh .bat, một việc bạn có thể làm là tạo một dự án thứ ba (loại ClassLibrary sẽ hoạt động) có phụ thuộc là ConsoleApp và ClassLibrary; gọi nó là PostSolutionBuildEvents.Sau đó, có post-build của nó là một lệnh ILMerge. Bằng cách này, bạn có quyền truy cập vào tất cả các macro như '$ (SolutionDir)'. –
Lưu ý: Bạn không cần phải GAC công cụ cho mục đích này, có một số lượng lớn các tùy chọn khác nhau, từ "nó chỉ hoạt động" khi không có gì là GACd để tập tin cấu hình ứng dụng –
bạn đã bao giờ giải quyết này? cùng một vấn đề ở đây ... –