gluck / il-repack

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

Despite being a single DLL after using ILRepack, other programs can detect the hidden dependencies. #293

Closed Arina-Markova closed 11 months ago

Arina-Markova commented 3 years ago

Hello, I have a problem with using ILRepack. Could you please help me? I have shown my use case graphically here (see image 1). Could you please look at this and let me know if there is any solution for my case. 1) There is a productive system which uses a NuGet package "AutoMapper". 2) Second program is virtually a module which I package as NuGet and include in program 1: "PAZ". Additionally, I want to package this module under single DLL. Until now I have successfully packaged the module under single DLL using ILRepack. But... 3) Thereby the problems occur as soon as I include my NuGet-"Module.SapApiWrapper" into the system 1 "PAZ". There is a conflict at AutoMapper.dlls, because they exist in both (See picture 2). 4) My expectation was: If I package my NuGet program 2: "Module.SapApiWrapper" as a single dll, then all dependencies will be hidden and not visible to the outside. Result: In despite of one single dll, the program 1: "PAZ" can recognize all hidden dependencies and this leads to compiler errors. Question: Is it possible to somehow hide all dependencies in program 2: "Module.SapApiWrapper" so that they run only internally for this program and are not visible externally? In my case I need that Automapper.dll is hidden. So the own module can be included as NuGet without problem in already running systems without making adjustments for this every time at these systems. Thank you!

Image 1: image

Image 2: image

SteveGilham commented 2 years ago

My expectation was: If I package my NuGet program 2: "Module.SapApiWrapper" as a single dll, then all dependencies will be hidden and not visible to the outside.

This is the purpose of the /internalize command line flag; hiding the dependencies is an opt-in feature. Of course if you are using /internalize, then there is a bug that would need fixing.