2016-06-28 19 views
15

Ich habe ein einfaches .NET Core-Projekt (Konsolen-App), das ich versuche zu kompilieren und auszuführen. dotnet build erfolgreich ist, aber ich bekomme die folgende Fehlermeldung, wenn ich dotnet run tun:Die Bibliothek hostpolicy.dll wurde nicht gefunden

λ dotnet run 
Project RazorPrecompiler (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. 
A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in [path]. 

Mein project.json sieht wie folgt aus:

{ 
    "buildOptions": { 
    "warningsAsErrors": true 
    }, 
    "dependencies": { 
    "Microsoft.AspNetCore.Razor": "1.0.0", 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0" 
    } 
    }, 
    "description": "Precompiles Razor views.", 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ ] 
    } 
    }, 
    "version": "1.2.0" 
} 

Was ist hostpolicy.dll, und warum ist es fehlt?

+2

Ich lief in diesen Fehler beim Versuch, ein benutzerdefiniertes DotnetCliTool mit Visual Studio 2017 RC3, die ein runtimeconfig.json fehlte. Die nächste VS-Version wird es standardmäßig packen. https://github.com/dotnet/cli/issues/5593#issuecomment-277638612 –

+0

Derselbe Fehler kann angezeigt werden, wenn Sie dotnet MyApp.exe ausführen, führen Sie einfach MyApp.exe ["Die Bibliothek 'hostpolicy.dll' erforderlich "Wenn aus dem Deploy-Ordner ausgeführt, aber emitEntryPoint ist wahr] (// stackoverflow.com/a/38333053) –

Antwort

10

Diese Fehlermeldung ist nicht hilfreich. Die tatsächlichen Problem ist eine fehlende emitEntryPoint Eigenschaft:

"buildOptions": { 
    ... 
    "emitEntryPoint": true 
    }, 

Sobald dieser hinzugefügt wird, wird der Compiler damit Sie wissen, über andere Probleme (wie eine fehlende static void Main() Methode). Das erfolgreiche Kompilieren des Projekts führt zu einer Ausgabe, die dotnet run ausführen kann.

+3

Ich habe dies vor einiger Zeit eingereicht: https://github.com/dotnet/cli/issues/2859 – Pawel

+0

Da dies ist immer noch in rtm passiert es könnte es wert sein, in der github repo nur für den fall notieren. –

+2

@NickAcosta - Ich denke, diese Art von Problemen sind, warum Werkzeug ist Vorschau2 und nicht RTM (der Meilenstein für den Fehler ist 1.0.0-RTM). Nur Laufzeit ist rtm. – Pawel

6

Update für Dotnet Kern 2.0: die Datei appname.runtimeconfig.json (sowohl für Debug-und Release-Konfiguration) in dem gleichen Weg wie appname.dll erforderlich ist.

Es enthält:

{ 
    "runtimeOptions": { 
    "tfm": "netcoreapp2.0", 
    "framework": { 
     "name": "Microsoft.NETCore.App", 
     "version": "2.0.0" 
    } 
    } 
} 

dann dotnet.exe exec "path/to/appname.dll" [appargs] funktioniert.

+0

Diese Antwort war teilweise relevant für mich, da ich auch dotnet Core 2.0 verwende. Ich bin mir nicht sicher, ob ich etwas seltsames an meinem Arbeitsplatz gemacht habe, aber ich habe auch festgestellt, dass ich .dll in den Verzeichnissen "obj" und "bin" hatte. Ich war in "obj" und erkannte, dass die Datei in "bin" bereits diese Datei ".runtimeconfig.json" enthielt. Das Laufen hat ohne Änderungen funktioniert. – voltrevo

1

Für mich mit ASP.NET Core 2.0 auf Azure, war es die appname.deps.json, die den Trick gemacht.