Z różnych powodów używamy ilmerge do umieszczenia wszystkich naszych złożeń aplikacji w jednym pliku, aby użytkownik mógł obsłużyć tylko jeden plik. Niestety wygląda na to, że nie ma sposobu na scalenie plików .pdb ze złożeniami. Ktoś zna sposób na obejście tego?Czy istnieje sposób na połączenie plików pdb z ilmerge?
Odpowiedz
Ok, wymyśliłem ten jeden, chociaż zajęło to trochę czasu.
Ten artykuł ma/ndebug dokładnie do tyłu.
Od release notes, które pochodzą z ILMerge (ILMerge.doc, podkreślenie moje):
2,8 DebugInfo publiczne bool DebugInfo {get; zestaw; } Po ustawieniu wartości true, ILMerge tworzy plik .pdb dla zespołu wyjściowego i łączy w nim dowolne pliki .pdb znalezione dla złożeń wejściowych. Jeśli nie nie chcą .pdb plik stworzony dla montażowa, albo ustawić tę właściwość false albo określić opcja/ndebug na polecenia linii. Domyślnie: true linia poleceń opcja:/ndebug
Rozwiązanie to specjalnie nie mają tę flagę na linii poleceń. ILMerge domyślnie scala pliki pdb. Upewnij się, że wszystkie pliki pdb z zestawów źródłowych znajdują się w tym samym katalogu, obok powiązanych z nimi bibliotek dll, aby program ILMerge mógł je znaleźć. (Używamy referencji do projektu i mamy jeden projekt ILMerge, który dba o to wymaganie.)
Oto odpowiednia sekcja z mojego pliku csproj ILMerge.
<Target Name="AfterBuild">
<CreateItem Include="@(ReferencePath)" Condition="'%(CopyLocal)'=='true'">
<Output TaskParameter="Include" ItemName="IlmergeAssemblies" />
</CreateItem>
<Exec Command=""..\..\Libraries\Ilmerge.exe" /copyattrs /allowMultiple /out:"@(MainAssembly)" "@(IntermediateAssembly)" @(IlmergeAssemblies->'"%(FullPath)"', ' ')" />
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>
Dla kompletności, używam najnowszej wersji ilmerge.exe: wersja 2.10.219.0, z datą ostatniej modyfikacji 2/19/2010 9:49 AM
Możesz je scalić za pomocą flagi/ndebug na komendzie.
Ten article wyjaśnia więcej.
Dzięki za informacje. Z jakiegoś powodu przełącznik po prostu zatrzymuje tworzenie pliku pdb oprócz połączonego zespołu, ale nie umieszcza informacji w zespole scalonym. Opublikuję aktualizację, gdy dowiem się, co się dzieje. – pat
Mam ten sam problem co @longeasy./ndebug w ogóle nie pomaga. –
/ndebug połączy kilka pdb w jeden, tak jak w przypadku złożeń. Pytanie brzmi: jak scalić złożenia z plikami pdb, więc to wszystko jest jednym pojedynczym plikiem. – Lucas
- 1. Czy istnieje sposób na połączenie dwóch plików .gcda w jeden?
- 2. Wyjątek ILMerge podczas próby scalenia pliku pdb
- 3. Czy istnieje narzędzie równoważne ILMerge dla Mono?
- 4. XSLT: Prosty sposób na połączenie plików XML
- 5. LINQ: Czy istnieje sposób na połączenie tych zapytań w jeden?
- 6. Czy istnieje sposób na różnicowanie plików z C++?
- 7. Czy istnieje sposób na otwarcie wielu plików naraz z vim?
- 8. Jakikolwiek sposób, aby VS (2010) zaakceptował PDB po użyciu ILMerge/Costura do łączenia złożeń?
- 9. Jak scalić wiele plików PDB?
- 10. Czy istnieje sposób na leniwe ładowanie plików CSS w Angular?
- 11. MSBuild nie buduje plików PDB
- 12. Czy istnieje sposób na importowanie wszystkich plików częściowych w SASS?
- 13. Czy istnieje sposób na odtwarzanie plików MP3 w Qt 4.5?
- 14. Czy istnieje sposób wyświetlenia rozmieszczonych plików na platformie Azure?
- 15. Czy istnieje sposób na przetestowanie połączenia SQLAlchemy?
- 16. Łatwy sposób na połączenie plists?
- 17. Istnieje sposób na połączenie GLKit w aplikacji IOS4?
- 18. Czy istnieje bezpieczny sposób na stwierdzenie, czy połączenie JDBC jest nadal w porządku?
- 19. Czy istnieje sposób na uproszczenie tego przypadku?
- 20. Czy istnieje prostszy szybki sposób wykrywania, czy urządzenie (Windows Phone 7) ma połączenie z Internetem?
- 21. Czy istnieje sposób używania figaro z brygadzistą?
- 22. Czy istnieje sposób na uzyskanie wszystkich plików z blob z błękitnym
- 23. Czy istnieje lepszy sposób na konwersję z UTCTime na EpochTime?
- 24. Czy istnieje sposób na zbieranie treści z grup na Facebooku?
- 25. Czy istnieje sposób przeglądania plików .pcap wireshark w Skrzypek?
- 26. Czy istnieje sposób wyłączenia buforowania systemowego (unix) dla plików dyskowych?
- 27. Czy istnieje lepszy sposób monitorowania plików dziennika? (Linux/python)
- 28. Czy istnieje sposób na przeciążenie + = w python?
- 29. Czy istnieje sposób na uniknięcie wyszukiwania liniowego?
- 30. Czy istnieje sposób na uniezależnienie UserControl?
ale dlaczego trzeba, że ? Czy chcesz dodać jako zasób? –
Gdy aplikacja ulega awarii, ślad stosu pokazuje tylko nazwę funkcji, która się nie powiodła. Plik pdb wzdłuż pliku wykonywalnego pokazuje również numer wiersza w pliku źródłowym, w którym wystąpił błąd. – pat