Code Monkey home page Code Monkey logo

Comments (6)

jmelosegui avatar jmelosegui commented on June 10, 2024

This is a really interesting feature I would personally use it if it were available.
I am wondering how much ILMerge MSBuild task NuGet package project could help us to solve this issue or if we really need to implement our own version due to some limitation.
I will try to accomplish the goal of this issue using that package and I''l come back with some feedback.

from pinvoke.

jmelosegui avatar jmelosegui commented on June 10, 2024

After some tests it doesn't seem to offer a full control over what to merge or in which order (also see this comment form the author).

Any way. If we create a nuget package that, base on configuration, it allows us to choose assemblies to merge using ILMerge within MSBuild, that could be useful in more than one scenario. So I don't know if the name "PInvoke.ILMerge" is too specific and this feature deserve its own project.

Thoughts?

from pinvoke.

AArnott avatar AArnott commented on June 10, 2024

Thanks for the investigation, @jmelosegui. It's been a long time since I've used ILMerge. I recall that it can demote merged types' visibility from public to internal, which would be useful. I hope it also can drop unused types and methods.

I suspect that comment you linked to about ILMerge being rather unused lately is probably true. And the complexity of a general purpose project is probably going to be higher than the specific case of merging in libraries from this project.

So I think the first thing to do is find out how well we can get it to work by hand. And assess whether it's valuable to pursue at all. Then we can go on to see if it's specialized enough in that scenario to warrant a PInvoke specific kind of package.

from pinvoke.

vbfox avatar vbfox commented on June 10, 2024

Personally I don't find the merging so useful but it might interest some authors. Especially library authors that want to provide a small self-contained lib. But I think that using git submodules to reference this repo and including only the needed files would be easier than the complexities of an IL level merge.

Regarding the merge tool https://github.com/gluck/il-repack is an OSS and maintained alternative to ILMerge that could be investigated.

I hope it also can drop unused types and methods.

As far as I know it's more the domain of the mono linker project than the merge tools. And mono linker isn't really maintained (It evolved into the Xamarin packager for android/iOS but that's not OSS.

from pinvoke.

jmelosegui avatar jmelosegui commented on June 10, 2024

@AArnott

I hope it also can drop unused types and methods.

ILMerge don't offer that feature. Maybe we can evaluate a tool like Mono.Cecil to do some static analysis and strip off the "unused" methods and types after the merge.

Thougths?

from pinvoke.

AArnott avatar AArnott commented on June 10, 2024

Yes, I'm sure we could build it. There would be complications although I expect we could work through them.
I'm totally cool with not spending time on this till we have would-be customers asking for it.

from pinvoke.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.