Strongly named assembly in place of a non-named assembly
===

Is there a way to use a strongly named assembly in place of a non-named assembly?

The real question is this:

I am creating a library (eg: SqliteOrm.dll) (Portable Class Library in my instance, by the problem is with any type) that references another library (eg: System.Data.dll) which differs depending on the platform (iOS, Android, WP, desktop and WinRT). This library (SqliteOrm.dll) is then consumed by applications from each platform, but will switch System.Data.dll.

However, System.Data.dll exists in the GAC with a strong name. This causes an exception when the library is consumed:

    System.IO.FileNotFoundException: 
    Could not load file or assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
    The system cannot find the file specified.

The reason I am doing this is because System.Data.dll does not exist in WP but does in M4A. I use the native System.Data.dll on M4A, but my own version on WP. My version only includes the neccessary types, so it does differ in this way.

I am currently testing using Metro and Desktop apps, and this is where the exception is occuring. I vaguely recall something about the fact that the M4A runtime doesn't actually do the check, but I would like my library to work on the desktop as well.

Does anyone have any tips for me, or is this whole thing a bad practice?
