ILMerge...Why?

J

J.B. Moreno

Arne Vajhøj said:

Either a distributed system or frequent updates -- otherwise what does
it matter if they have to download X amount of data, unzip it it into Y
number of files or 1 file?

The teams producing different parts of the app becomes dependent
on each other.

No more so than with static linking -- it adds an additional step, but
everything else is otherwise unchanged.

MSIs, ILMerge, VISE -- lots of tools to turn the deployment into a
single application, there's really no difference between having a
deployment application and having an application XCopy application
deployment.

The difference comes in when updating or extending it -- the initial
download is the same.
Those terms are not that well defined.

But if you think:
large is > 1 million LOC
medium 100000-1 million LOC
then you are not that far from me.

So maybe 5-50 meg for a medium and, 50+ for a large.

On a fast connection, you don't even need to break it up into smaller
pieces for frequent updates. On a slow connection, you better hope you
don't have to do frequent updates because even portion is going to be
slow...

I am talking development process - not operations.

Then you're mixing things up -- if you're not actually using the
dynamic loading (by which I mean switching to a newer version of the
code without relinking on the users machine) then it doesn't gain you
anything.
 
B

Brian Gideon

Deployment is part of the development process, but in most cases it
shouldn't be driving it.  If it is, then you probably have some kind of
distributed execution system, and not a single application.


How does it not work?  And how about putting some numbers to "large"
and "medium"?

One thing to consider to here is that the CLR loader is very lazy. It
will only load what it needs. I can't say with absolute certainty,
but I suspect if everything were stuffed into one assembly then system
resources could be negatively affected. Assuming that is the case
then the conclusion is that the effect is proportional to the size of
the project.
 
C

CSharper

One thing to consider to here is that the CLR loader is very lazy.  It
will only load what it needs.  I can't say with absolute certainty,
but I suspect if everything were stuffed into one assembly then system
resources could be negatively affected.  Assuming that is the case
then the conclusion is that the effect is proportional to the size of
the project.

just to add to this thread. I am a big fan of ilmerge, in my case it
has nothing to do with dll's it has more to do with resource files. In
my case, I have to distribute couple of resource files created another
program (dynamically) need to be included in the final exe of one
another program. In this case, I would like to use ILMerge and it
works like a charm except the fact it has memory problems.
 
J

J.B. Moreno

Brian Gideon said:
One thing to consider to here is that the CLR loader is very lazy. It
will only load what it needs. I can't say with absolute certainty,
but I suspect if everything were stuffed into one assembly then system
resources could be negatively affected. Assuming that is the case
then the conclusion is that the effect is proportional to the size of
the project.

That's possible, although extremely vague (and fallible) memory says
that even within the same file the assemblies are distinct and only
loaded as needed (and unloaded when not).
 
B

Brian Gideon

That's possible, although extremely vague (and fallible) memory says
that even within the same file the assemblies are distinct and only
loaded as needed (and unloaded when not).

I don't know either. I suppose I could actually use ILMerge and
examine the resultant assembly to make the determination, but that
takes time. Anyone know for sure?
 
A

Andy

Actually, load time may decrease by breaking things out to DLLs. .Net
only loads assemblies on demand, so until your program uses them, they
sit on the disk unloaded. If on the other hand you've merged your
DLLs into one file, the ENTIRE file must be read into memory before
execution can begin. So I don't think this argument is a particularly
sound one.
 
J

J.B. Moreno

Brian Gideon said:
I don't know either. I suppose I could actually use ILMerge and
examine the resultant assembly to make the determination, but that
takes time. Anyone know for sure?

Well, not about ILMerge but whether assemblies are unloaded depends
upon whether they are loaded domain neutral or not...more later.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top