coapp / coapp.powershell

ClrPlus Signing
52 stars 43 forks source link

Allow creating hard links to DLLs instead of copying them #17

Open yodantauber opened 11 years ago

yodantauber commented 11 years ago

Write-NuGetPackage generates an MSBuild "Copy" task in the targets file for each DLL specified with "bin:" in the autopkg file.

I would like to be able to pass "UseHardlinksIfPossible=true" to the Copy command, thereby creating hard links to the DLLs instead of copying them. In many native libraries this makes a huge difference - I have seen libraries with hundreds of megabytes worth of DLLs, and it takes time to copy them around.

fearthecowboy commented 11 years ago

Hmm.

That's not a terrible idea; I gotta think on that a bit.

fearthecowboy commented 11 years ago

I think I could make this work in the non app-store and non-windows-phone models. In those, they use additional elements to control crap going into the output.

The next version of the tools ended up requiring the addition of a MSBuild Tasks Extension DLL being embedded into the package (which makes it easier to add new and more complex actions into the package). A 'smarter' copy/hardlink task could certainly be done now.

I've got a really packed week, but I'm gonna see if I can squeeze it in this week somewhere ... no promises yet (but I think we can make sure it gets done in this month)

yodantauber commented 11 years ago

Thanks for trying to get this in! Just to make sure I understand your comment correctly: what do you mean by "A 'smarter' copy/hardlink task could certainly be done now"? The regular MSBuild Copy task is already capable of hard-linking, it's only a matter of adding an attribute to the Copy element in the XML.

fearthecowboy commented 11 years ago

Well, that I did not know.

Hmm. Wonder how the hell I missed that?

I'll see about making an option for that.

fearthecowboy commented 11 years ago

Hmm. I can't see a reason not to make that the default, now that I think of it.

fearthecowboy commented 11 years ago

The next build will have this on by default.

fearthecowboy commented 11 years ago

I've got a new Development version posted that supports this. (the CopyToOutput methodology changed, and the default now turns this on)

use

  PS > update-coapptools –Development -killallpowershells

To update to my current Dev version (as of this moment, 2.4.164.0 )

As soon as I can get a bit more testing on this to make sure that it's at least fairly stable, and doesn't have any really broken things, I'll promote this to 'Beta'

yodantauber commented 11 years ago

I tested this on the latest development version (2.4.199.0) and it creates hard links indeed. Thanks!