2016-05-30 12 views
0

Hier ist das Szenario. Ich habe ein brandneues Asp.Net DNX RC2 Final Projekt erstellt. Ich habe meiner Lösung auch ein .Net-Klassenbibliotheksprojekt hinzugefügt (beide unter FX 4.6.1). Das Klassenbibliotheksprojekt befindet sich im Ordner src.Referenzierte .NET-Assembly zur Laufzeit nicht gefunden

Dann füge ich einen Verweis auf die Klassenbibliothek hinzu, und es kann alle Pakete erfolgreich wiederherstellen, nachdem Sie Änderungen an der Datei project.json vorgenommen haben.

ich eine einfache foo Funktion meiner Klassenbibliothek

namespace ClassLibrary1 
{ 
    public class Class1 
    { 
     public static string Foo() 
     { 
      return "Bar"; 
     } 
    } 
} 

und schließlich in meinem Home/Index Ansicht hinzugefügt haben, ich habe folgendes auf

<div> 
    @(ClassLibrary1.Class1.Foo()) 
</div> 

Die Lösung kompiliert hinzugefügt mit keine Fehler. Sie denken vielleicht so weit so gut, lass uns weitermachen.

Dann, wenn ich die Lösung laufen, ist die folgende zeigt:

enter image description here

Zur Laufzeit meine Klassenbibliothek nicht vorhanden ist.

Antwort

1

Ich geriet in eine ähnliche Situation. In meinem Fall habe ich in Visual Studio eine RazorEngine-Exception erhalten, die mir zumindest einen Hinweis gab, was vor sich ging (es war so etwas wie eine fehlende Referenzausnahme, obwohl die Klassenbibliothek als Referenz hinzugefügt wurde).

Der einzige Weg, die ich bekommen konnte es funktioniert (ich hoffe es einen besseren Weg ist), war der folgende Code in meine ConfigureServices Methode in Startup.cs hinzuzufügen:

services.Configure<RazorViewEngineOptions>(options => 
{ 
    var previous = options.CompilationCallback; 
    options.CompilationCallback = (context) => 
    { 
     previous?.Invoke(context); 
     context.Compilation = context.Compilation.AddReferences(MetadataReference.CreateFromFile(typeof(ClassLibrary1.Class1).Assembly.Location)); 
    }; 
}); 

Ich habe die Idee aus den folgenden Webseiten:

Callback on RazorViewEngineOptions

Configure RazorViewEngine

ich habe bestätigen, dass Ihr Beispiel funktioniert wenn ich den oben erwähnten Code hinzufüge.

Verwandte Themen