Stian,
Thanks for the quick reply. I watched the screencast by Miguel Castro and it was very informative. Unfortunately it doesn't cover the silverlight situation. However using that as a starting place, I was able to get something working which others may find useful.
Create two assemblies: ServerDataContracts and SilverlightDataContracts (this one as a silverlight assembly). In each one's AssemblyInfo.cs add the following line:
[assembly: ContractNamespace("http://YourNamespaceUri",
ClrNamespace = "YourDataContractsNamespace")]
Add all of your DataContracts to the ServerDataContracts assembly. In the SilverlightDataContracts assembly, right click on the project (or sub-folder) and select "Add Existing Item". Browse to the DataContracts in the ServerDataContracts assembly and selected the ones you want to add. DO NOT HIT "Add"!!! Instead, click the down arrow next to "Add" and select "Add As Link". This links the SilverlightDataContracts project to the existing files in the ServerDataContracts project. Now when you edit one, both projects get the change. When you compile, the projects compile separately with their correct targets.
Now add the ServerDataContracts assembly as a reference to your service contract project. Do the same for your SilverlightDataContracts assembly to your silverlight application. When you add a service reference from your silverlight client to your service, it should not generate the datacontracts. It should instead use the ones from your assembly.
I have gotten this working, however it is still missing some of the features provided by the generated datacontract classes. The generated classes implement INotifyPropertyChanged which is extremely useful when databinding in silverlight/wpf. While you can implement this yourself, it is fairly tedious and now your server code must execute all of these event handlers on every property set even though you will probably never subscribe to the PropertyChanged event on the server.
I'm still looking for a cleaner way to handle this. It looks like silverlight 4 will make this easier in that you can use the same assembly in both the client and the server (the compiled code is compatible). Unfortunately that is too far away for my needs.