Please refer this article
http://uwekaessner.spaces.live.com/blog/cns!21916E8556D908E!175.entry?sa=260352433
I am just writing out the main steps from it and the steps where we need to strong sign the assembly so that it could be used within Plugin.
Add web reference to CrmService.asmx
http://servername/mscrmservices/2007/CrmService.asmx
Go to “web references” folder.
Copy Reference.cs file to a new folder.
Rename it to CrmServiceSerialized.cs
Open the CrmServiceSerialized.cs class, rename the class to CrmServiceSerialized.
namespace MyApplication.CrmServiceSerialized
Change the CrmService property
public CrmService(string url) {
this.Url = url;
Complie it to a dll
If we want to use the Serialized dll within Plugin we need to strong sign it
sn.exe -k g.snk
csc /t:library /out:CrmServiceSerialized.dll CrmServiceSerialized.cs /keyfile:g.snk
To pre generate a strong named XmlSerializer dll
sgen.exe /p CrmServiceSerialized.dll /compiler:/keyfile:g.snk
Next again open CrmServiceSerialized.cs and comment out all occurrences of [System.Xml.Serialization.XmlIncludeAttribute using Find and replace.
Next we need to add the attribute
“[System.Xml.Serialization.XmlSerializerAssemblyAttribute(AssemblyName = "CrmServiceSerialized.XmlSerializers")]”
to the “CrmServiceSerialized” class.
Again generate the strong name assembly using the same key
csc /t:library /out:CrmServiceSerialized.dll CrmServiceSerialized.cs /keyfile:g.snk
Now we can add reference to CrmServiceSerialized.dll in our plugin to use it. Here also need to place CrmServiceSerialized.dll and CrmServiceSerialized.XmlSerializers.dll to the GAC.
Check this link as well
http://blogs.javista.com/2009/03/18/best-practices-for-crm-memory-usage/
Bye..