1

プロジェクト フォルダに .dll ファイルがあり、Assembly.Load() を介してロードしたいと考えています。

AssemblyName name = new AssemblyName("Portable.Store, Version=0.1.0.0, Culture=neutral, PublicKeyToken=12ay62c33eocf6uf");
Assembly assembly = Assembly.Load(name);

FileNotFoundExceptionただし、パスが指定されていないため、これはスローされます。また、Portable Class Libraries のみがサポートされているためAssembly.LoadFrom()、または使用できませんAssembly.LoadFile()Assembly.Load()

pcl内でこれを行う方法はありますか? どんな助けでも大歓迎です、ありがとう!

編集 #1 : 読み込もうとしているアセンブリが非 PCL であるかどうかは重要ですか? これが PCL の目的に反することはわかっていますが、PCL に含まれていないライブラリがいくつかあります。したがって、条件付きコンパイルを使用して、プラットフォームに応じて、プラットフォーム固有のアセンブリを読み込みます。

編集#2:dllを配置する場所に関する詳細情報が見つかりました:https://stackoverflow.com/a/6440406/2464165

今のところ、プロジェクトフォルダー内に.slnファイルと一緒に配置しただけで、アプリのプローブパスはどこにあるのでしょうか?

編集 #3 : dll ファイルを .dll ファイルの Resources フォルダー内に配置することができました。したがって、MyPCL.dll があり、その中に ResourcesFolder/Portable.Store があります。メインの AppX ルート ディレクトリだけでなく、特定のフォルダーを参照するように Assembly.Load に指示するにはどうすればよいですか?

4

1 に答える 1

2

Windows ストア アプリケーションでポータブル ライブラリを実行していると仮定しています (読み込もうとしているアセンブリ名に基づきます)。

アプリを格納する場所は 2 つあります。フレームワーク アセンブリの場合は GAC 内、ユーザー アセンブリの場合は Appx パッケージ内のいずれかです。

"Portable.Store" (これは私の PclContrib プロジェクトのものだと思います) はユーザー アセンブリであるため、AppX パッケージからロードする必要があります。両方のアセンブリが最終的に AppX パッケージに含まれるようにするには、AppxManifest を含む Windows ストア プロジェクトが両方を参照するようにします。それでおしまい。

Assembly.Load がまだアセンブリを見つけられない場合は、Assembly.Load に渡す厳密な名前が正しいことを確認してください。

于 2013-08-14T20:37:05.677 に答える