How to include another assembly in a Windows Phone 8 XAP-Collection of common programming errors

You can add a compiled assembly (.dll file) to your WP8 project and set the file Build Action to ‘Content’. Then you can try to load it as so :

var folder = await StorageFolder.GetFolderFromPathAsync(Path.Combine(Windows.ApplicationModel.Package.Current.InstalledLocation.Path, "Plugins", "Services"));
var files = await folder.GetFilesAsync();
var firstFile = files.FirstOrDefault();
var assy = Assembly.LoadFrom(firstFile.Path);

But Assembly.LoadFrom will fail since it’s unsupported. You can still use this to load other binary content but not code.

All you can do is reference all ‘plugins’ or whatever assemblies you might need and not directly reference any type from these assemblies. By ‘reference the assemblies’ I mean right click on references (in the WP8 project) and “Add reference…”.

You can then do this :

var assy = Assembly.Load("MyCompany.MyProject.WhateverAssembly");
var tp = typeof(IService);
var x = ass.GetTypes().Where(t => t.IsClass && tp.IsAssignableFrom(t)).SingleOrDefault();
Activator.CreateInstance(x);

Not very elegant but I could call it a workaround.