Per vari motivi, utilizziamo ilmerge per mettere tutti i nostri assembly di applicazioni in un unico file in modo che l'utente debba gestire un solo file. Sfortunatamente sembra che non ci sia modo di unire i file .pdb con gli assembly. Qualcuno sa come aggirare questo?C'è un modo per unire i file pdb con ilmerge?
risposta
Ok, ho capito questo, anche se ci è voluto un po '.
Questo articolo ha/ndebug esattamente all'indietro.
Dalle note di rilascio che vengono con ILMerge (ILMerge.doc, sottolineatura mia):
2,8 DebugInfo pubblico bool DebugInfo {get; impostato; } Quando è impostato su true, ILMerge crea un file .pdb per l'assembly di uscita e si fonde in tutti i file .pdb trovati per gli assembly di input. Se fate non vogliono un file PDB creato per l'assemblaggio di uscita, impostare questa proprietà su false oppure specificare l'opzione/NDEBUG al riga di comando. predefinito: vera linea di comando opzione:/NDEBUG
La soluzione è appositamente per non hanno quella bandiera sulla linea di comando. ILMerge unirà i file pdb per impostazione predefinita. Assicurati che tutti i file pdb degli assembly sorgente si trovino nella stessa directory, accanto alle loro DLL associate, in modo che ILMerge possa trovarli. (Stiamo usando i riferimenti ai progetti e abbiamo un progetto ILMerge, che si occupa di questo requisito.)
Ecco la sezione pertinente dal mio file csproj di 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>
Per completezza, sto utilizzando l'ultima versione di ilmerge.exe: Versione 2.10.219.0, con una data dell'ultima modifica del 2010/02/19 09:49
Puoi averlo unire per te usando il flag/ndebug sul comando.
Questo article spiega di più.
Grazie per le informazioni. Per qualche motivo, lo switch mantiene solo ilmerge dalla produzione di un file pdb oltre all'assieme unito, ma non inserisce le informazioni nell'assieme unito. Pubblicherò un aggiornamento quando scoprirò cosa non funziona. – pat
Ho lo stesso problema di @longeasy./ndebug non aiuta affatto. –
/ndebug unirà diversi pdb in uno, proprio come con gli assiemi. La domanda è come unire gli assembly con i file pdb, quindi è tutto un singolo file. – Lucas
ma perché avete bisogno che ? vuoi aggiungere solo come risorsa? –
Quando l'applicazione si arresta in modo anomalo, la traccia dello stack mostra solo il nome della funzione non riuscita. Con il file pdb lungo l'eseguibile mostra anche il numero di riga nel file sorgente in cui si è verificato l'errore. – pat