We often think how to modify our code during writing, debugging, but rarely after assembly is built. Well, there are a few kinds of post-build manipulations we might want to perform on compiled assemblies:
Merge
This nice utility was developed by Mike Barnett from Microsoft Research and it enables merging multiple assemblies to a single one. This may be very useful, when one wants to deliver a single component or executable without exposing the internal structure of assemblies. It may be used as command-line utility (from post build action as well) and as a assembly reference and wrapped within another tool. It does not work on Silverlight assemblies, at least at the moment of writing these lines and I asked Mike to check this out.
http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx
Convert to Silverlight
This project developed by Suriel Bendahan enables converting assemblies compiled on server-side .NET to Silverlight compatible assemblies. It makes possible to reuse code written as "server-side" on Silverlight client. It might be useful for generic data structures, generic algorithms, input validations, sharing interfaces etc. The project is provided with it sources, so it can be modified/adopted for your needs.
http://www.codeproject.com/KB/silverlight/SLAssemblies.aspx
Compress
Silverlight assemblies are being downloaded to browser in a XAP file, which is a bunch of DLLs compressed using ZIP compression. This project developed by Rob Houweling uncompresses these assemblies and compresses them again with a higher compression rate. This is very useful when XAP size becomes an issue.
http://web-snippets.blogspot.com/2008/11/another-one-on-repacking-xaps-to-reduce.html
Obfuscate
Obfuscation is a process of changing the readability of the code without changing its functionality. The reason for doing this is preventing others from seeing implementation. Visual Studio comes with a Dotfuscator Community Edition and there are others providers of obfuscation utilities.
Monday, 8 June 2009
Monday, 25 May 2009
WolframAlpha
A new computational knowledge base is up and running. It calculates whatever you want, including your mortgage return, distance between cities and much more.
Try it: http://www.wolframalpha.com
In order to add WolframAlpha to search providers of your IE click here and follow instructions on "Create Your Own" section
Try it: http://www.wolframalpha.com
In order to add WolframAlpha to search providers of your IE click here and follow instructions on "Create Your Own" section
Monday, 27 April 2009
Google surprises again
Google do not stop to surprise us with their Holiday logos.
They presented their logo in a form of a Gogol's famous nose on his 200th anniversary:

Now they present a logo in Morse code on Samuel Morse's anniversary:

What's next?
They presented their logo in a form of a Gogol's famous nose on his 200th anniversary:

Now they present a logo in Morse code on Samuel Morse's anniversary:

What's next?
Great tool for files synchronizing: GetDropBox.com
There are things, that when we discover them at first we think "How they weren't invented before?", then we get used to them very quickly and finally we can't imagine living without them. One of such things is a great tool that keeps files on your different computers synchronized. The tool is Drop Box: it creates a Drop Box folder on your computers, for example your laptop and your desktop machine and synchronizes them. So you may drop files with any directories structure on your desktop and they will appear on the laptop as well. In addition, you can browse the files on the web, share them with others etc.
Follow this link, so I'll get an extra space:
Drop Box
Follow this link, so I'll get an extra space:
Drop Box
Thursday, 16 April 2009
WCF CollectionDataContract and DataMember attributes
I came to write this post just occasionally: I was required to add a property to an existing collection. The colleciton was generated on the WCF and was sent to a client. I was surprised to discover, that it's not supported and other people already faced this issue and expressed their frustration and posted different workarounds on the web. Unfortunately, none of these suggestions worked. So I decided to post a tested solution.
So here is the situation, we have an Entity class and a collection of them:
It will compile, but will not serialize AdditionalProperty at all! So what can we do about it if EntitiesCollection must stay a Collection?
We can mark our collection as DataContract and wrap another collection inside. Like this:
Hope it helped somebody
So here is the situation, we have an Entity class and a collection of them:
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using System.Collections.Generic;
[DataContract]
public class Entity
{
public int ID {get; set;}
public int Name {get; set;}
}
[CollectionDataContract]
public class EntityCollectionNotSupported : Collection
{
[DataMember]
public int AdditionalProperty { get; set; }
}
* This source code was highlighted with Source Code Highlighter.It will compile, but will not serialize AdditionalProperty at all! So what can we do about it if EntitiesCollection must stay a Collection?
We can mark our collection as DataContract and wrap another collection inside. Like this:
[DataContract]
public class EntityCollectionWorkaround : ICollection
{
public EntityCollectionWorkaround()
{
Entities = new List();
}
[DataMember]
public int AdditionalProperty { get; set; }
[DataMember]
public List Entities { get; set; }
// Implement here ICollection,
// IEnumerable and IEnumerable members
// by wrapping Entities
}
* This source code was highlighted with Source Code Highlighter.Hope it helped somebody
Subscribe to:
Posts (Atom)