2011-09-06 82 views
8

Tôi đang cố gắng hợp nhất hai assembly thành một assembly duy nhất, hoạt động tốt. Tuy nhiên, khi tôi cố gắng kết hợp các * .pdb tập tin quá, tôi nhận được một lỗi:Ngoại lệ ILMerge khi cố gắng hợp nhất tệp pdb

Access to the path "F:\Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Planrechnung\Planrechnung.pdb" is denied.

Nếu tôi sử dụng tùy chọn/NDEBUG để bỏ qua việc sáp nhập các tập tin * .pdb, nó hoạt động tốt. Nhưng tất nhiên các biểu tượng không thể được nạp trong khi gỡ lỗi. Lúc đầu, tôi nghĩ khi gọi ILMerge trong sự kiện postbuild, Planrechung.pdb đã được sử dụng và khóa. Tôi cũng đã thử đóng VS2010 và gọi ILMerge từ dòng lệnh, nhưng kết quả vẫn giữ nguyên. Tôi đã kiểm tra với ProcessExplorer và không có xử lý trên tệp.

Đây là cách tôi gọi ILMerge:

E:\XP\Tools\ILMerge\ilmerge /targetplatform:v4,"D:\WINDOWS\Microsoft.NET\Framework\v4.0.30319" /lib:"F:\Fentec\Businessplan\trunk\Ausgabe\Debug\bin" /out:Planrechnung.dll "F:\Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Planrechnung\Planrechnung.dll" "F:\Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Mandantenverwaltung\Mandantenverwaltung.dll"

Tôi đã bị mất cái gì? Nếu có bất kỳ thông tin bổ sung nào bạn cần, chỉ cần hỏi.

Greetings,
Skalli

+0

thể trùng lặp của [Có cách nào để kết nối các file pdb với ILMerge?] (Http://stackoverflow.com/questions/1439721/is-there- a-way-to-merge-pdb-files-with-ilmerge) –

+0

Không, tôi đã đọc câu hỏi đó. Nhưng nó chỉ xử lý cách xử lý tùy chọn/ndebug, không phải vấn đề mà tôi có ở đây. – Skalli

Trả lời

19

Tôi đã tìm ra giải pháp cho vấn đề và hơi xấu hổ.

Tên đầu ra không được trùng tên của một trong các tệp pdb đã hợp nhất. Nếu không thì vấn đề này xảy ra. Khi tôi thay đổi tên của một hội đồng, nó hoạt động rất tốt. Nó cũng không có vấn đề gì để ghi đè lên một assembly trong tiến trình, nhưng bạn không thể ghi đè lên một tệp pdb hiện có.
Tôi không ngờ điều này và tình cờ gặp nó. Xin lỗi vì tất cả những rắc rối

Greetings,
Skalli

+0

Đã xảy ra lỗi tương tự. 1 cho số – yas4891

+0

Tôi cũng làm như vậy, và bạn đã cứu mạng tôi. Một thứ ngu ngốc như vậy. Đừng xin lỗi, bạn cung cấp một câu hỏi hay với câu trả lời tiết kiệm cuộc sống là một trong những mục đầu tiên trong google. – JoshuadV

+1

Nếu bạn chỉ định một số thư mục \ output khác, không có lỗi nào xảy ra và bạn không phải thay đổi tên. –

0

Nghe có vẻ với tôi như các tập tin PDB bị khóa, có lẽ vì nó được sử dụng trong một chương trình gỡ rối (chẳng hạn như Visual Studio).

Thử đóng cả Visual Studio và ứng dụng của bạn (nếu bạn chưa có).

Nếu điều đó không hoạt động thì hãy sử dụng công cụ như Process Explorer để tìm kiếm các quy trình mở tệp đó. Trong quá trình thám hiểm, bạn có thể làm điều này bằng cách sử dụng Find -> Tìm Xử lý hoặc DLL ...:

Screenshot of the Process Explorer Search dialog

Nhập tên của tập tin/pdb bạn đang tìm kiếm và nó sẽ liệt kê tất cả các quá trình có mà tập tin mở - hoặc đóng các chốt cá nhân hoặc giết/đóng các ứng dụng đó và thử lại.

+0

Xin chào Justin, tôi đã thử điều đó rồi. Không có xử lý bằng cách sử dụng Planrechnung.pdb. Nhưng tôi đã phát hiện ra rằng chính bản thân ILMerge đang gây ra vấn đề. ILMerge có thể ghi đè lên một assembly, chứ không phải một tệp pdb. Tôi đã thay đổi tên của hội đồng và bây giờ nó có vẻ làm việc. – Skalli

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