2011-09-06 44 views
8

Próbuję połączyć dwa złożenia w jeden zespół, który działa dobrze w porządku. Jednak, gdy próbuję połączyć pliki * .pdb też pojawia się błąd:Wyjątek ILMerge podczas próby scalenia pliku pdb

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

Gdybym użyć opcji/ndebug aby przejść łączących pliki * .pdb, to działa dobrze. Ale oczywiście nie można załadować symboli podczas debugowania. Na początku myślałem, że podczas wywoływania ILMerge w przypadku postbuild, ten Planrechung.pdb był w użyciu i zablokowany. Próbowałem też zamknąć VS2010 i wywołać ILMerge z wiersza poleceń, ale wynik pozostał taki sam. Sprawdziłem z ProcessExplorer i nie ma obsługi pliku.

ten sposób wzywam 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"

Czy coś przeoczyłem? Jeśli potrzebujesz dodatkowych informacji, po prostu zapytaj.

Pozdrowienia,
Skalli

+0

możliwe duplikat [Czy istnieje sposób scalania plików PDB ILMerge?] (Http://stackoverflow.com/questions/1439721/is-there- a-way-to-merge-pdb-files-with-ilmerge) –

+0

Nie, przeczytałem to pytanie. Ale obsługuje tylko sposób radzenia sobie z opcją/ndebug, a nie problem, który mam tutaj. – Skalli

Odpowiedz

19

Znalazłem rozwiązanie problemu i jest trochę zawstydzające.

Nazwa wyjściowa nie może być taka sama jak jeden z scalonych plików pdb. W przeciwnym razie wystąpią problemy. Kiedy zmieniłem nazwę zespołu, działało świetnie. Nie ma również problemu z zastąpieniem złożenia w procesie, ale nie można zastąpić istniejącego pliku pdb.
Nie spodziewałem się tego i natknąłem się na to przez przypadek. Przepraszam za wszystkie kłopoty

Pozdrowienia,
Skalli

+0

Zrobiłem ten sam błąd. +1 dla tego – yas4891

+0

Ja też zrobiłem to samo, a ty uratowałeś mi życie. Takie głupie rzeczy. Nie przepraszaj, dostarczasz miłe pytanie z ratującą życie odpowiedzią, która jest jednym z pierwszych wpisów w Google. – JoshuadV

+1

Jeśli podasz inny \ katalog wyjściowy, nie pojawi się taki błąd i nie musisz zmieniać nazw. –

0

To brzmi dla mnie jak plik .pdb jest zablokowany, prawdopodobnie dlatego, że jest w użyciu w debugera (takich jak Visual Studio).

Spróbuj zamknąć program Visual Studio i aplikację (jeśli już tego nie zrobiłeś).

Jeśli to nie działa, użyj narzędzia takiego jak Process Explorer, aby wyszukać procesy, które mają ten plik otwarty. W Process Explorer można to zrobić za pomocą Find -> Znajdź Handle lub DLL ...:

Screenshot of the Process Explorer Search dialog

Wprowadź nazwę pliku/PDB którego szukasz i będzie to lista wszystkich procesów, które mają, że plik otwarty - zamknij poszczególne uchwyty lub zabij/zamknij te aplikacje i spróbuj ponownie.

+0

Witaj Justin, już to wypróbowałem. Nie ma uchwytów za pomocą Planrechnung.pdb. Ale doszedłem do wniosku, że przyczyną problemu jest sama ILMerge. ILMerge może nadpisać złożenie, ale nie plik pdb. Zmieniłem nazwę zespołu i teraz wydaje się działać. – Skalli

Powiązane problemy