in ILRepack/ILRepack.cs [109:164]
private AssemblyDefinitionContainer ReadInputAssembly(string assembly, bool isPrimary)
{
Logger.Info("Adding assembly for merge: " + assembly);
try
{
ReaderParameters rp = new ReaderParameters(ReadingMode.Immediate) { AssemblyResolver = GlobalAssemblyResolver };
if (Options.DebugInfo)
{
rp.ReadSymbols = true;
rp.SymbolReaderProvider = new DefaultSymbolReaderProvider(false);
}
AssemblyDefinition mergeAsm;
try
{
mergeAsm = AssemblyDefinition.ReadAssembly(assembly, rp);
}
catch (BadImageFormatException e) when (!rp.ReadSymbols)
{
throw new InvalidOperationException(
"ILRepack does not support merging non-.NET libraries (e.g.: native libraries)", e);
}
// cope with invalid symbol file
catch (Exception) when (rp.ReadSymbols)
{
rp.ReadSymbols = false;
try
{
mergeAsm = AssemblyDefinition.ReadAssembly(assembly, rp);
}
catch (BadImageFormatException e)
{
throw new InvalidOperationException(
"ILRepack does not support merging non-.NET libraries (e.g.: native libraries)", e);
}
Logger.Info("Failed to load debug information for " + assembly);
}
if (!Options.AllowZeroPeKind && (mergeAsm.MainModule.Attributes & ModuleAttributes.ILOnly) == 0)
throw new ArgumentException("Failed to load assembly with Zero PeKind: " + assembly);
GlobalAssemblyResolver.RegisterAssembly(mergeAsm);
return new AssemblyDefinitionContainer
{
Assembly = assembly,
Definition = mergeAsm,
IsPrimary = isPrimary,
SymbolsRead = rp.ReadSymbols
};
}
catch
{
Logger.Error("Failed to load assembly " + assembly);
throw;
}
}