2009-09-17 19 views
19

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?

+0

ale dlaczego trzeba, że ? Czy chcesz dodać jako zasób? –

+5

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

Odpowiedz

24

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="&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> 

Dla kompletności, używam najnowszej wersji ilmerge.exe: wersja 2.10.219.0, z datą ostatniej modyfikacji 2/19/2010 9:49 AM

-3

Możesz je scalić za pomocą flagi/ndebug na komendzie.

Ten article wyjaśnia więcej.

+0

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

+1

Mam ten sam problem co @longeasy./ndebug w ogóle nie pomaga. –

+1

/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

Powiązane problemy