Comments (6)
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.
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.
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.
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.
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.
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)
- Request: Better exception handling or documentation for CreateFile HOT 3
- Refresh packages on NuGet HOT 1
- Change NTSTATUS/HResult FACILITY_CODE to match CsWin32 definitions HOT 3
- No release / release notes for 0.7.124 HOT 1
- User32.InvalidateRect missing
- Refactor FacilityCode bitshift op to Facility properties
- MCG0037 error release build with Kernel32 HOT 3
- Support for .NET 6 to include in Maui? HOT 2
- User32+MOUSEINPUT.cs has the wrong type for mouseData
- `User32.EnumChildWindows` has wrong typed argument HOT 1
- Dwmapi DwmIsCompositionEnabled is missing HOT 1
- Init script exception calling "DownloadFile" 404 Not Found HOT 5
- Kernel32.QueryFullProcessImageName broken on Windows 7 HOT 2
- Type of DLGTEMPLATE HOT 1
- User32.SetLayeredWindowAttributes missing HOT 2
- DirectX Video Acceleration HOT 1
- Missing user32 DeleteMenu HOT 5
- Missing user32 RegisterHotKey HOT 2
- Add mpr.dll HOT 1
- Add support for mssign32.dll HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pinvoke.