2009-09-17 41 views
19

Vì nhiều lý do khác nhau, chúng tôi sử dụng ilmerge để đưa tất cả các nhóm ứng dụng của chúng tôi vào một tệp để người dùng chỉ cần xử lý một tệp. Thật không may có vẻ như không có cách nào để hợp nhất các tệp .pdb với các assembly. Có ai biết cách làm việc đó không?Có cách nào để hợp nhất các tệp pdb với ilmerge không?

+0

nhưng tại sao bạn cần điều đó ? bạn có muốn thêm một tài nguyên không? –

+5

Khi ứng dụng gặp sự cố theo dõi ngăn xếp, chỉ hiển thị tên của hàm không thành công. Với tệp pdb dọc theo tệp thi hành, nó cũng hiển thị số dòng trong tệp nguồn nơi xảy ra lỗi. – pat

Trả lời

24

Ok, tôi đã tìm ra điều này, mặc dù phải mất một lúc.

Bài viết đó có/ndebug chính xác ngược.

Từ ghi chú phát hành đi kèm với ILMerge (ILMerge.doc, tôi nhấn mạnh):

2,8 DebugInfo công bool DebugInfo {get; bộ; } Khi điều này được đặt thành true, ILMerge tạo tệp .pdb cho lắp ráp đầu ra và hợp nhất vào bất kỳ tệp nào .pdb được tìm thấy cho cụm đầu vào. Nếu bạn làm không muốn có một tập tin PDB tạo cho lắp ráp đầu ra, hoặc thiết lập khách sạn này là false hoặc nếu không xác định tùy chọn/NDEBUG tại lệnh dòng. Mặc định: đúng dòng lệnh tùy chọn:/NDEBUG

Giải pháp là đặc biệt để không có mà cờ trên dòng lệnh của bạn. ILMerge sẽ hợp nhất các tệp pdb theo mặc định. Hãy chắc chắn rằng tất cả các tệp pdb của các assembly nguồn của bạn nằm trong cùng thư mục, cùng với các dll liên kết của chúng, để ILMerge có thể tìm thấy chúng. (Chúng tôi đang sử dụng tài liệu tham khảo dự án và có một dự án ILMerge, yêu cầu yêu cầu này.)

Đây là phần liên quan từ tệp ILMerge csproj của tôi.

<Target Name="AfterBuild"> 
    <CreateItem Include="@(ReferencePath)" Condition="'%(CopyLocal)'=='true'"> 
     <Output TaskParameter="Include" ItemName="IlmergeAssemblies" /> 
    </CreateItem> 
    <Exec Command="&quot;..\..\Libraries\Ilmerge.exe&quot; /copyattrs /allowMultiple /out:&quot;@(MainAssembly)&quot; &quot;@(IntermediateAssembly)&quot; @(IlmergeAssemblies->'&quot;%(FullPath)&quot;', ' ')" /> 
    <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" /> 
    </Target> 

Để hoàn chỉnh, tôi đang sử dụng phiên bản mới nhất của ilmerge.exe: Phiên bản 2.10.219.0, với một ngày sửa đổi cuối cùng của 2010/02/19 09:49

-3

Bạn có thể kết hợp chúng cho bạn bằng cách sử dụng cờ/ndebug trên lệnh.

Điều này article giải thích thêm.

+0

Cảm ơn thông tin. Đối với một số lý do chuyển đổi chỉ giữ ilmerge từ sản xuất một tập tin pdb ngoài việc lắp ráp hợp nhất nhưng không đưa thông tin vào lắp ráp hợp nhất. Tôi sẽ đăng một bản cập nhật khi tôi tìm hiểu những gì đang xảy ra. – pat

+1

Tôi gặp vấn đề tương tự như @longeasy./ndebug không giúp gì cả. –

+1

/ndebug sẽ hợp nhất một số pdb thành một, giống như với các hội đồng. Câu hỏi đặt ra là làm thế nào để hợp nhất các assembly với các tệp pdb, do đó, nó là tất cả một tệp duy nhất. – Lucas

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