I would like my Core assembly to not expose a certain class and I would still like to be able to test it. How can I do that ?
With InternalsVisible if your assemblies are strongly named you need to specify the public key (note: the full key not the public key token) for example...
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("BoardEx_BusinessObjects.Tests,
PublicKey=0024000004800000940000000602000000240000525341310004000001000100fb3a2d8 etc etc")]
and the following trick is really useful for getting the public key without resorting to the cmd line...
http://www.andrewconnell.com/blog/archive/2006/09/15/4587.aspx