ich den Code unten in den beiden jeweiligen DLLs haben. dll1 hängt von dll2 ab.
Wenn DoWork()
aufgerufen wird, wird myInterface.MyListMethod(ImmutableList<byte>.Empty);
in Ordnung ausgeführt. Wenn es myInterface.MyArrayMethod(ImmutableArray<byte>.Empty);
die folgende Ausnahme auszuführen geht geworfen:
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);
}
Testing
Aus meiner Sicht scheint es, dass ImmutableArray<>
Fehler ist, wie ich dies mit mehreren Typen versucht habe, einschließlich, wie Sie oben sehen können, mit anderen Typen im Immutable Namespace. Es passiert nur mit ImmutableArray<>
, soweit ich es versucht habe.
Ich habe auch dafür gesorgt, dass beide dlls die aktuellen dlls sind und es keine alte cached Version gibt, die um den gac herum hängt. Aktualisieren der Schnittstelle, sodass eine andere Methode aufgerufen wird, bevor MyArrayMethod wie erwartet funktioniert.
Visual Studios nimmt speziell nicht aufrufen Referenzen auf die Methode auf der Schnittstelle, die ImmutableArray<>
param enthält, aber es wird für Methoden mit der ImmutableList<>
. Es werden auch Referenzen aufgenommen, wenn Sie den Parameter ImmutableArray<>
aus der Methode entfernen.
Die Lösung baut jedoch in Ordnung, es nur, wenn es um JIT versucht zu Laufzeit, dass dieser Fehler ausgelöst wird.
Haben Sie versucht, die Lösung zu reinigen und neu zu erstellen? Es ist interessant, dass sich die fehlende Methode auf einen String-Parameter bezieht. Dies würde möglicherweise auf einen alten Build hinweisen, der versucht hat, MyArrayMethod aufzurufen (string, ImmutableArray); –
Haben Sie diese Lösung ausprobiert? http://StackOverflow.com/Questions/29966585/asp-net-vnext-missingmethodexception-method-not-found-microsoft-codeanalysis – silkfire
@silkfire yea Ich habe das müde.Beide DLLs lesen die gleiche unveränderliche DLL und ich habe verschiedene Versionen davon versucht. Um es hinzuzufügen. Dies geschieht nur für meine bestehenden Projekte, auf denen ich aufbauen möchte. Ich habe eine neue SLN mit zwei Projs und der gleichen unveränderlichen DLL erstellt und das hat kein Problem. Es scheint so zu sein, wie die SLN/Projs eingerichtet wurden. Ich vermute die Compiler-Version, aber ich weiß es wirklich nicht. –