gluck / il-repack

Open-source alternative to ILMerge
Apache License 2.0
1.17k stars 217 forks source link

Failed to load assembly when merging complete project #203

Closed devedse closed 9 months ago

devedse commented 7 years ago

Hi all, I'm trying to merge a big set of the .NET Standard dll's into a WPF project. Previously this worked fine but after upgrading some thing to the latest .NET Core / .NET Standard I seem to get the following exception:

INFO: ------------- IL Repack Arguments -------------
/out:C:\projects\deveimageoptimizerwpf\Scripts\Output\DeveImageOptimizerWPF.exe  C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\DeveImageOptimizerWPF.exe C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\DeveImageOptimizer.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.Extras.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.Platform.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\ImageSharp.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\Microsoft.Practices.ServiceLocation.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\Microsoft.Win32.Primitives.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\netstandard.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\SixLabors.Core.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.AppContext.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Buffers.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Collections.Concurrent.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Collections.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Collections.NonGeneric.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Collections.Specialized.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.ComponentModel.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.ComponentModel.EventBasedAsync.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.ComponentModel.Primitives.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.ComponentModel.TypeConverter.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Console.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Data.Common.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Contracts.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Debug.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.DiagnosticSource.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.FileVersionInfo.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Process.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.StackTrace.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.TextWriterTraceListener.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Tools.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.TraceSource.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Tracing.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Drawing.Primitives.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Dynamic.Runtime.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Globalization.Calendars.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Globalization.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Globalization.Extensions.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.Compression.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.Compression.ZipFile.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.FileSystem.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.FileSystem.DriveInfo.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.FileSystem.Primitives.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.FileSystem.Watcher.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.IsolatedStorage.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.MemoryMappedFiles.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.Pipes.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.IO.UnmanagedMemoryStream.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Linq.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Linq.Expressions.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Linq.Parallel.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Linq.Queryable.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Memory.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.Http.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.NameResolution.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.NetworkInformation.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.Ping.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.Primitives.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.Requests.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.Security.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.Sockets.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.WebHeaderCollection.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.WebSockets.Client.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Net.WebSockets.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Numerics.Vectors.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.ObjectModel.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Reflection.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Reflection.Extensions.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Reflection.Primitives.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Resources.Reader.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Resources.ResourceManager.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Resources.Writer.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.CompilerServices.Unsafe.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.CompilerServices.VisualC.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.Extensions.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.Handles.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.InteropServices.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.InteropServices.RuntimeInformation.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.Numerics.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.Serialization.Formatters.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.Serialization.Json.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.Serialization.Primitives.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Runtime.Serialization.Xml.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Security.Claims.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.Algorithms.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.Csp.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.Encoding.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.Primitives.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.X509Certificates.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Security.Principal.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Security.SecureString.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Text.Encoding.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Text.Encoding.Extensions.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Text.RegularExpressions.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Threading.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Threading.Overlapped.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Threading.Tasks.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Threading.Tasks.Parallel.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Threading.Thread.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Threading.ThreadPool.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Threading.Timer.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.ValueTuple.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Windows.Interactivity.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Xml.ReaderWriter.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Xml.XDocument.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Xml.XmlDocument.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Xml.XmlSerializer.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Xml.XPath.dll C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\System.Xml.XPath.XDocument.dll
-----------------------------------------------
INFO: Adding assembly for merge: C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\DeveImageOptimizerWPF.exe
INFO: Adding assembly for merge: C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\DeveImageOptimizer.dll
INFO: Adding assembly for merge: C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.dll
INFO: Adding assembly for merge: C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.Extras.dll
INFO: Adding assembly for merge: C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.Platform.dll
INFO: Adding assembly for merge: C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\ImageSharp.dll
INFO: Adding assembly for merge: C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\Microsoft.Practices.ServiceLocation.dll
INFO: Adding assembly for merge: C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\Microsoft.Win32.Primitives.dll
ERROR: Failed to load assembly C:\projects\deveimageoptimizerwpf\DeveImageOptimizerWPF\bin\Release\Microsoft.Win32.Primitives.dll
Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
   at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
   at Mono.Cecil.DefaultAssemblyResolver.Resolve(AssemblyNameReference name)
   at Mono.Cecil.MetadataResolver.Resolve(TypeReference type)
   at Mono.Cecil.TypeReference.Resolve()
   at Mono.Cecil.Mixin.CheckedResolve(TypeReference self)
   at Mono.Cecil.SignatureReader.ReadCustomAttributeEnum(TypeReference enum_type)
   at Mono.Cecil.SignatureReader.ReadCustomAttributeElement(TypeReference type)
   at Mono.Cecil.SignatureReader.ReadCustomAttributeConstructorArguments(CustomAttribute attribute, Collection`1 parameters)
   at Mono.Cecil.MetadataReader.ReadCustomAttributeSignature(CustomAttribute attribute)
   at Mono.Cecil.CustomAttribute.<Resolve>b__34_0(CustomAttribute attribute, MetadataReader reader)
   at Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func`3 read)
   at Mono.Cecil.CustomAttribute.get_ConstructorArguments()
   at Mono.Cecil.ImmediateModuleReader.ReadCustomAttributes(ICustomAttributeProvider provider)
   at Mono.Cecil.ImmediateModuleReader.ReadModule(ModuleDefinition module)
   at Mono.Cecil.ImmediateModuleReader.<ReadModule>b__1_0(ModuleDefinition module, MetadataReader reader)
   at Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func`3 read)
   at Mono.Cecil.ModuleReader.CreateModuleFrom(Image image, ReaderParameters parameters)
   at Mono.Cecil.ModuleDefinition.ReadModule(String fileName, ReaderParameters parameters)
   at ILRepacking.ILRepack.ReadInputAssembly(String assembly, Boolean isPrimary)
   at ILRepacking.ILRepack.ReadInputAssemblies()
   at ILRepacking.ILRepack.Repack()
   at ILRepacking.Application.Main(String[] args)

The PowerShell file I'm using to build: https://github.com/devedse/DeveImageOptimizerWPF/blob/master/Scripts/GoRepack.ps1

The build failing on AppVeyor (it's marked green but it's actually failing): https://ci.appveyor.com/project/devedse/deveimageoptimizerwpf

I already tried changing the order and first passing netstandard.dll, but that didn't help either.

gluck commented 7 years ago

Hi,

I've never tried .Net Core/Standard, but got feedback that it worked fine. Though ILRepack may need some hints about where to find the referenced libraries, did you try adding /lib:PATH_TO_NETSTD_FOLDER ?

(PR welcome to implement these hints in ILRepack, currently it only knows where to find the .Net Framework assemblies)

lextm commented 7 years ago

Similar to other Mono Cecil based projects, as the user you need to manually specify which folder to locate the dependencies for .NET Standard 2.0 based assemblies.

See if /lib:"c:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.0.0\ref\netcoreapp2.0\" helps.

HelloKitty commented 7 years ago

Encountering the same issue on Myget for netstandard2.0 ILRepack. Hinting didn't appear to work.

devedse commented 6 years ago

I just tried it using the latest NuGet package: 2.0.14 and suddenly my build worked!! :smile:.

I'm running into a new issue though. When I download the artefact from my build I see the following error 😭 :

image

You can view my source and build script here: https://github.com/devedse/DeveImageOptimizerWPF

The build output here: https://ci.appveyor.com/project/devedse/deveimageoptimizerwpf/build/1.0.30

And the build artefact (that crashes) here: https://ci.appveyor.com/project/devedse/deveimageoptimizerwpf/build/1.0.30/artifacts

timotei commented 6 years ago

@devedse Which version did you use when you posted the first post in this issue? (I'm trying to see what fixed between then and your version)

emysa341 commented 6 years ago

I have a following situation

devedse commented 6 years ago

@timotei, that was on 2.0.13

devedse commented 6 years ago

With 2.0.16 I'm still running into this issue:

C:\XGitPrivate\DeveImageOptimizerWPF\Scripts\Output>DeveImageOptimizerWPF.exe

Unhandled Exception: System.BadImageFormatException: Duplicate type with name 'System.Data.AcceptRejectRule' in assembly 'DeveImageOptimizerWPF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

I tried to add things like /union and /allowduplicateresources but this didn't work either. I got these from here; https://github.com/gluck/il-repack/issues/231

The strange thing is though that they don't appear in my ILRepack arguments either:

(It just shows the out:... parameter and all input files)

PS C:\XGitPrivate\DeveImageOptimizerWPF\Scripts> & $ilrepackexe $arguments
INFO: IL Repack - Version 2.0.16
INFO: ------------- IL Repack Arguments -------------
/out:C:\XGitPrivate\DeveImageOptimizerWPF\Scripts\Output\DeveImageOptimizerWPF.exe  C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\DeveImageOptimizerWPF.exe C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\CommonServiceLocator.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\DeveImageOptimizer.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\DeveLibVipsNuget.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\ExifLibrary.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.Extras.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\GalaSoft.MvvmLight.Platform.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\Microsoft.Win32.Primitives.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\netstandard.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\PropertyChanged.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\SixLabors.Core.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\SixLabors.ImageSharp.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.AppContext.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Buffers.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Collections.Concurrent.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Collections.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Collections.NonGeneric.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Collections.Specialized.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.ComponentModel.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.ComponentModel.EventBasedAsync.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.ComponentModel.Primitives.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.ComponentModel.TypeConverter.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Console.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Data.Common.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Contracts.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Debug.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.DiagnosticSource.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.FileVersionInfo.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Process.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.StackTrace.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.TextWriterTraceListener.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Tools.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.TraceSource.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Diagnostics.Tracing.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Drawing.Primitives.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Dynamic.Runtime.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Globalization.Calendars.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Globalization.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Globalization.Extensions.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.Compression.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.Compression.ZipFile.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.FileSystem.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.FileSystem.DriveInfo.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.FileSystem.Primitives.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.FileSystem.Watcher.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.IsolatedStorage.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.MemoryMappedFiles.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.Pipes.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.IO.UnmanagedMemoryStream.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Linq.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Linq.Expressions.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Linq.Parallel.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Linq.Queryable.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Memory.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.Http.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.NameResolution.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.NetworkInformation.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.Ping.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.Primitives.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.Requests.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.Security.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.Sockets.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.WebHeaderCollection.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.WebSockets.Client.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Net.WebSockets.dll
C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Numerics.Vectors.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.ObjectModel.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Reflection.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Reflection.Extensions.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Reflection.Primitives.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Resources.Reader.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Resources.ResourceManager.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Resources.Writer.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.CompilerServices.Unsafe.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.CompilerServices.VisualC.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.Extensions.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.Handles.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.InteropServices.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.InteropServices.RuntimeInformation.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.Numerics.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.Serialization.Formatters.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.Serialization.Json.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.Serialization.Primitives.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Runtime.Serialization.Xml.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Security.Claims.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.Algorithms.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.Csp.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.Encoding.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.Primitives.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Security.Cryptography.X509Certificates.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Security.Principal.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Security.SecureString.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Text.Encoding.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Text.Encoding.Extensions.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Text.RegularExpressions.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Threading.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Threading.Overlapped.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Threading.Tasks.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Threading.Tasks.Parallel.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Threading.Thread.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Threading.ThreadPool.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Threading.Timer.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.ValueTuple.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Windows.Interactivity.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Xml.ReaderWriter.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Xml.XDocument.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Xml.XmlDocument.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Xml.XmlSerializer.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Xml.XPath.dll C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\System.Xml.XPath.XDocument.dll
-----------------------------------------------
INFO: Adding assembly for merge: C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\DeveImageOptimizerWPF.exe
INFO: Adding assembly for merge: C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\CommonServiceLocator.dll
INFO: Adding assembly for merge:
...
...
...
INFO: Merging <Module>
INFO: Processing exported types
INFO: Processing resources
INFO: Fixing references
INFO: Writing output assembly to disk
INFO: Finished in 00:00:04.8134939

This is how the generated .exe file looks from ILSpy, you can also see multiple System.Data's being loaded here: image

devedse commented 6 years ago

When doing a merge using the latest beta (v2.1.0-beta1) it does seem to include the /union parameter at the beginning, I get a lot more errors:

Union parameter at the beginning:

/union /out:"C:\XGitPrivate\DeveImageOptimizerWPF\Scripts\Output\DeveImageOptimizerWPF.exe" "C:\XGitPrivate\DeveImageOptimizerWPF\DeveImageOptimizerWPF\bin\Release\DeveImageOptimizerWPF.exe" "C:\XGitPri.......
...
...
...
INFO: Processing types
INFO: Processing resources
WARN: [System.Runtime.CompilerServices.CompilationRelaxationsAttribute] attribute wasn't merged because of inconsistency across merged assemblies
INFO: Fixing references
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining ExifLibrary.BitConverterEx/ByteOrder from the merge
WARN:  - Add assembly defining System.Void ExifLibrary.BitConverterEx::.ctor(ExifLibrary.BitConverterEx/ByteOrder,ExifLibrary.BitConverterEx/ByteOrder) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining ExifLibrary.BitConverterEx/ByteOrder from the merge
WARN:  - Add assembly defining System.Void ExifLibrary.BitConverterEx::.ctor(ExifLibrary.BitConverterEx/ByteOrder,ExifLibrary.BitConverterEx/ByteOrder) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining ExifLibrary.BitConverterEx/ByteOrder from the merge
WARN:  - Add assembly defining System.Void ExifLibrary.BitConverterEx::.ctor(ExifLibrary.BitConverterEx/ByteOrder,ExifLibrary.BitConverterEx/ByteOrder) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining ExifLibrary.BitConverterEx/ByteOrder from the merge
WARN:  - Add assembly defining System.Char ExifLibrary.BitConverterEx::ToChar(System.Byte[],System.Int64,ExifLibrary.BitConverterEx/ByteOrder,ExifLibrary.BitConverterEx/ByteOrder) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining ExifLibrary.BitConverterEx/ByteOrder from the merge
WARN:  - Add assembly defining System.UInt16 ExifLibrary.BitConverterEx::ToUInt16(System.Byte[],System.Int64,ExifLibrary.BitConverterEx/ByteOrder,ExifLibrary.BitConverterEx/ByteOrder) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining ExifLibrary.BitConverterEx/ByteOrder from the merge
...
...
...
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining SixLabors.Primitives.Rectangle from the merge
WARN:  - Add assembly defining System.Boolean SixLabors.Primitives.Rectangle::op_Equality(SixLabors.Primitives.Rectangle,SixLabors.Primitives.Rectangle) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining SixLabors.Primitives.PointF from the merge
WARN:  - Add assembly defining System.Numerics.Matrix3x2 SixLabors.Primitives.Matrix3x2Extensions::CreateRotationDegrees(System.Single,SixLabors.Primitives.PointF) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining SixLabors.Primitives.PointF from the merge
WARN:  - Add assembly defining System.Numerics.Matrix3x2 SixLabors.Primitives.Matrix3x2Extensions::CreateSkewDegrees(System.Single,System.Single,SixLabors.Primitives.PointF) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining SixLabors.Primitives.Size from the merge
WARN:  - Add assembly defining SixLabors.Primitives.Size SixLabors.Primitives.Size::op_Multiply(SixLabors.Primitives.Size,System.Int32) to the merge
WARN: Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following
WARN:  - Remove the assembly defining SixLabors.Primitives.Size from the merge
WARN:  - Add assembly defining System.Boolean SixLabors.Primitives.Size::op_Inequality(SixLabors.Primitives.Size,SixLabors.Primitives.Size) to the merge
System.ArgumentException: Value does not fall within the expected range.
   at Mono.Cecil.SignatureWriter.WriteCustomAttributeEnumValue(TypeReference enum_type, Object value)
   at Mono.Cecil.SignatureWriter.WriteCustomAttributeElement(TypeReference type, CustomAttributeArgument argument)
   at Mono.Cecil.SignatureWriter.WriteCustomAttributeConstructorArguments(CustomAttribute attribute)
   at Mono.Cecil.MetadataBuilder.GetCustomAttributeSignature(CustomAttribute attribute)
   at Mono.Cecil.MetadataBuilder.AddCustomAttributes(ICustomAttributeProvider owner)
   at Mono.Cecil.MetadataBuilder.AddType(TypeDefinition type)
   at Mono.Cecil.MetadataBuilder.AddTypeDefs()
   at Mono.Cecil.MetadataBuilder.BuildTypes()
   at Mono.Cecil.MetadataBuilder.BuildModule()
   at Mono.Cecil.ModuleWriter.BuildMetadata(ModuleDefinition module, MetadataBuilder metadata)
   at Mono.Cecil.ModuleWriter.WriteModuleTo(ModuleDefinition module, Stream stream, WriterParameters parameters)
   at Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters)
   at ILRepacking.ILRepack.Repack()
   at ILRepacking.Application.Main(String[] args)

(Basically this error: https://github.com/gluck/il-repack/issues/181)

devedse commented 6 years ago

I also tried running ILMerge version ilmerge Version 2.14.1208 with the same command. This didn't give any errors and seemed to work. So for now I'll use ILMerge :).

https://github.com/Microsoft/ILMerge https://www.nuget.org/packages/ilmerge

The exe file generated by ILMerge opened in ILSpy: image As can be seen, there are no duplicates here.

Alexx999 commented 6 years ago

@devedse this is fixed by #235 I just hope that @gluck will merge that sometime soon and release a new version :)

devedse commented 6 years ago

Ah very nice +1

devedse commented 5 years ago

Hey all, any progress on this? @gluck @Alexx999

timotei commented 5 years ago

@emysa341 Can you please open a separate bug report with that issue and with a reproducible sample if possible? Otherwise we'll miss it.

Alexx999 commented 5 years ago

@devedse it's fixed in the master. As a stopgap solution, I've published avostres.ILRepack package with this fix and Cecil 0.10, also there's ILRepack.Lib.MSBuild package

devedse commented 5 years ago

@Alexx999, @gluck, I dont think there's any more activity on this repo. It seems Microsoft is pushing new releases now and then for ILMerge.

timotei commented 5 years ago

@devedse Actually, there is, just that @gluck didn't manage to get some time to merge some of the stuff :D

Alexx999 commented 5 years ago

@devedse it's worth noting that ILMerge is not perfect either - it failed when merging my projects same as ILRepack when I was picking merge tool to use. Now I'm just OK with maintaining my own ILRepack fork and don't really care to check how ILMerge is doing :) Ideally, @gluck would just spin off ILRepack by giving someone commit rights, but I'm not sure if that is going to happen.

devedse commented 5 years ago

I'm not sure if @gluck is still working on this projects. I don't see any commits in the last 9 months, so indeed, it might help to just give someone else the ability to do commits.

lextm commented 5 years ago

Take a look at the network graph, https://github.com/gluck/il-repack/network and you will see some forks are still active.

An open source project can continue in an active fork, if someone claims he/she will take over the responsibilities.

gluck commented 5 years ago

Hi ! Indeed my focus has shifted to other (non .Net) projects, and I don't have much time/motivation for this one now. That being said I don't want to let down the community either, and if there's anything (non-time consuming) I can do, let me know. I won't do reviews or investigate issues, but I'll have no concern merging any PR that a couple of members would have reviewed/tested, or making (automated) releases (but I'm not sure the gradle toolchain will survive w/o some effort, which for some reason the .Net community is unlikely to help with :) ). Good luck.

KirillOsenkov commented 9 months ago

The latest version should be working fine.