ソリューションの一部であるプロジェクトによって構築されたLabというアセンブリがあります。このアセンブリには、同じソリューション上の別のアセンブリからの反射を使用してアクセスしたいオブジェクトが含まれています。 (BL呼ばれる)は、他のアセンブリでは、私は、次のコードを持っている:アセンブリをロードできませんC#
Assembly assembly = Assembly.Load("Lab");
問題は、私はラボアセンブリからオブジェクトを開始しようとする行を追加しない限り、それはFileNotFoundException
を投げていることですコードのどこにでも置くことができます。 コンパイラがLabアセンブリをAssembly.Load
関数の認識可能な場所にロードしているかのようにします。これは本当に私を混乱
、 は、私は完全なアセンブリ名 を渡してみましたし、またAssembly.LoadFrom
ではなく、すべてのケースで、無駄、同じ問題にアセンブリの絶対パスを渡そうとしました。
オブジェクトのトラフリフレクションにアクセスしようとしている理由は、コードが単なるモジュールの一部であるためです。そして、反映されたdll(この場合はLab.dll)は実行時に動的に渡されます。 として実際
ソリューション
Avnerを説明し、私が疑われ、それを使用しています何のコードがなかったので、アセンブリは、プロジェクトのフォルダにコピーされませんでした。 さらに、アセンブリが欠落していることが、Lordkainのコメントに記載されている例外のFusionLogであることが証明されています。
プロジェクトのアイデアは、今後渡されるアセンブリパスを使用することであるため、Avnerで提案されているソリューションとは対照的に、すぐにその部分を実装することにしました。 だから方法で、アセンブリの名前の代わりに、アセンブリのパスを使用して:
Assembly.LoadFrom(*Assembly Path*);
は私が不足しているアセンブリの問題を中心に働きました。
これはあなたにとって有用です。https://indexoutofrange.com/Could_not_load_file_or_assembly_or_one_of_its_dependencies/ – lordkain
アセンブリ名の長い形式を指定する必要があります。たとえば、 'System、Version = 4.0.0.0、Culture =ニュートラル、PublicKeyToken = b77a5c561934e089' – DavidG