I find that there are two approaches to sharing library classes between .NET and .NET CF code bases.
The Code is Identical
Often the libraries can be identical, particularly if they are basic libraries that have calculations, or business classes that are identical. For non-UI libraries this is often the case since .NET CF is mostly a subset of .NET.
In this case, you can just build a device project and include it for your full windows project. You will get a warning that you are loading a device project, but if you haven't used any CF specific code, it is fine.
The Code is Very Similar, but Different
In this case, I create two project and thus two assemblies. One of these assemblies I make the primary one and include all of the files that are used. In the second I add the files as links to include them as references, so any updates are reflected. Then I use ifdefs for any special cases where they may differ.