問題
2 つのそれぞれの dll に以下のコードがあります。dll1 は dll2 に依存します。
がDoWork()
呼び出されると、正常に実行されmyInterface.MyListMethod(ImmutableList<byte>.Empty);
ます。実行しようとするmyInterface.MyArrayMethod(ImmutableArray<byte>.Empty);
と、次の例外がスローされます。
Exception:System.MissingMethodException: Method not found: Namespace.MyArrayMethod(System.Collections.Immutable.ImmutableArray'1<Byte>)
dll1.dll
public class TestClass
{
public void DoWork()
{
IMyInterface myInterface = new MyInterface();
myInterface.MyListMethod(ImmutableList<byte>.Empty);
myInterface.MyArrayMethod(ImmutableArray<byte>.Empty);
}
}
dll2.dll
public class MyInterface : IMyInterface
{
public void MyArrayMethod(ImmutableArray<byte> byteArray)
{
// Do stuff
}
public void MyListMethod(ImmutableList<byte> byteList)
{
// Do stuff
}
}
public interface IMyInterface
{
void MyArrayMethod(ImmutableArray<byte> byteArray);
void MyListMethod(ImmutableList<byte> byteList);
}
テスト
私の観点からは、ImmutableArray<>
上記のように、Immutable 名前空間の他の型を含む複数の型でこれを試したので、それは問題があるようです。ImmutableArray<>
私が試した範囲でのみ発生します。
また、両方の dll が現在の dll であり、古いキャッシュ バージョンが gac にぶら下がっていないことも確認しました。別のメソッドを持つようにインターフェイスを更新し、MyArrayMethod が期待どおりに機能する前にそれを呼び出します。
ImmutableArray<>
Visual Studios は特に、 paramを含むインターフェイスのメソッドへの参照の呼び出しを検出しませんが、 ImmutableList<>
. ImmutableArray<>
メソッドからパラメーターを削除すると、参照も取得されます。
ソリューションは正常にビルドされますが、このエラーがスローされるのは、実行時に JIT を試行した場合のみです。