Yes, .NET uses a lazy loading scheme: DLLs are not loaded until an type that references them is needed. However, it is quite strange that they did not show up in the GetReferencedAssemblies() method call... unless that call only returns the referenced assemblies that are currently loaded into the AppDomain.If you have this problem again... say with a business object that comes from an assembly where this is the only place you're using it, you can provide the full assembly qualified type name for the type and .NET will resolve it, like this:
MicroFour.StrataFrame.Data.SqlDataSourceItem, MicroFour StrataFrame Base, Version=1.5.0.0, Culture=neutral, PublicKeyToken=SomeHexValue