これは、アセンブリをPluginsフォルダーに書き出し、それらを読み込んで実行時にロードする例です。
AndroidAssetのビルドアクションに設定されたAssetsフォルダーに移動するアセンブリがあることを確認してください。以下のスクリーンショットを参照してください。
注意:拡張子を.mp3に変更する必要がある場合があります。ここを参照してください。私はこの問題を抱えていませんでした。
これを行うと、アセットマネージャーを使用してアセットを取得できるようになります。それらをロードするか、それらを使って何でもすることができます。これは、それらをメモリに読み込んで名前を書き出すサンプルです。
const String pluginPath = "Plugins";
var pluginAssets = Assets.List(pluginPath);
foreach (var pluginAsset in pluginAssets)
{
var file = Assets.Open(pluginPath + Java.IO.File.Separator + pluginAsset);
using (var memStream = new MemoryStream())
{
file.CopyTo(memStream);
//do something fun.
var assembly = System.Reflection.Assembly.Load(memStream.ToArray());
Console.WriteLine(String.Format("Loaded: {0}", assembly.FullName));
}
}
リリースモードでは、Mono for Androidがライブラリの静的分析を実行して、サイズの最適化を実行することに注意してください。この後にアセンブリをロードする場合は、含まれているはずの機能がない可能性があります。以下のスクリーンショットは、リリースビルドの標準のリンク構成を示しています。リンクを防ぐためにコードに追加できるフラグと構成がいくつかありますが(Xamarin Docs on Linking)、動的にロードされたライブラリに対して実行できることが多すぎるかどうかはわかりません。