System.MissingMethodException, wenn bestimmte Methoden von FSharp PowerPack verwendet und in einer Klassenbibliothek kompiliert werden

8

Also fange ich gerade mit F # an, und ich stoße auf ein sehr merkwürdiges Problem, bei dem ich eine System.MissingMethodException ausgelöst bekomme, wenn ich bestimmte Methoden aus dem FSharp PowerPack verwende.

Dies gilt nicht für alle Methoden im selben Modul. Es passiert auch nicht, wenn ich meine Assembly als eine Anwendung anstelle einer Klassenbibliothek kompiliere.

Reproduktionsschritte:

  1. Erstellen Sie 2 Assemblys, eine Klassenbibliothek und eine Anwendung.
  2. Fügen Sie nunit.framework und die FSharp.PowerPack-DLLs als Referenzen auf beide Assemblies hinzu.
  3. Erstellen Sie die folgende Testvorrichtung in jeder Baugruppe.

    %Vor%
  4. Kompilieren Sie beide Assemblies.
  5. Öffnen Sie jede Assembly in NUnit und führen Sie alle Tests aus.

Wenn ich das tue, läuft die Anwendung gut (alle Tests bestehen), aber die Klassenbibliothek schlägt mit der folgenden Ausnahme fehl:

%Vor%

Was ist hier los?

Eine andere Methode, die das Problem verursacht, ist matrix.PermuteColumns.

Zusätzliche Informationen:

  • Ich kompiliere beide Assemblies für .NET 4.5
  • Ich kompiliere mit Visual Studio 2012 RC
  • Ich benutze NUnit Version 2.5.10.11092
  • Ich verwende FSharp PowerPack Version 2.1.3.1 (obwohl die DLL-Eigenschaften angeben, dass es 2.0.0 ist)

Lassen Sie es mich wissen, wenn zusätzliche Informationen von Nutzen sind.

    
Lawrence Johnston 10.08.2012, 18:09
quelle

2 Antworten

3

Ich frage mich, ob dies mit verbindlichen Weiterleitungen zusammenhängt. Möglicherweise müssen Sie die app.config im Anwendungsprojekt in das Bibliotheksprojekt kopieren.

Das hört sich ähnlich wie ein bekanntes Problem an, über das ich gerade einen Blogeintrag für das F # -Teamblog (wahrscheinlich in den nächsten Wochen) über MSTest statt über NUnit schreibe. Ich würde versuchen, die app.config in das Bibliotheksprojekt zu kopieren, und wenn das nicht funktioniert, dann verwenden Sie die Online-Vorlage für Unit-Tests hier:

Ссылка

und wählen Sie zusätzlich 'TEST \ Test Settings \ Test Settings File auswählen' aus dem Menü in VS und zeigen Sie auf die 'MSTest.runsettings' Datei, die in der Unit Test Projektvorlage enthalten ist. Ich erwarte, dass einer dieser zwei Optimierungen es im MSTest-Fall beheben wird.

    
Brian 10.08.2012, 18:20
quelle
12

(Antwort für zukünftige Referenz, da dieses Q der erste Treffer bei der Suche war.)

Mit Visual Studio 2013 , mit der von Brian referenzierten Online-Projektvorlage "F # MSTest", hat keiner der Vorschläge von Brian geholfen (zum Anfang ist das Ziel des Tests ein Bibliotheksprojekt ohne App.Config ).

Ich fand jedoch schließlich heraus, dass das Testprojekt auf die Verwendung von F # 3 Runtime (mit FSharp.Core V4.3.0.0) eingestellt war. Wenn Sie dies auf F # v3.1 (FSharp.Core V4.3.1.0) änderten, wurde das Problem behoben.

    
Richard 27.08.2013 18:38
quelle