2016-06-28 144 views
15

我有一個簡單的.NET Core項目(控制檯應用程序),我試圖編譯和運行。 dotnet build成功,但我得到以下錯誤,當我做dotnet run找不到庫hostpolicy.dll

λ 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]. 

我project.json看起來是這樣的:

{ 
    "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" 
} 

什麼是hostpolicy.dll,並且它爲什麼不見了?

+2

我試圖運行一個自定義DotnetCliTool與Visual Studio 2017 RC3缺少runtimeconfig.json時遇到此錯誤。下一個VS版本將默認打包。 https://github.com/dotnet/cli/issues/5593#issuecomment-277638612 –

+0

可能會顯示相同的錯誤,如果您運行dotnet MyApp.exe,只需運行MyApp.exe [「需要庫'hostpolicy.dll' 「如果從部署文件夾運行,但emitEntryPoint爲true](// stackoverflow.com/a/38333053) –

回答

10

此錯誤消息是無益的。該實際問題是缺少emitEntryPoint屬性:

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

一旦加入,編譯器將讓您瞭解其他任何問題(如缺少static void Main()方法)。成功編譯該項目將產生dotnet run可執行的輸出。

+3

我之前提出這個:https://github.com/dotnet/cli/issues/2859 – Pawel

+0

因爲這是還是發生在rtm,這可能值得在github回購中注意以防萬一。 –

+2

@NickAcosta - 我猜這些問題是爲什麼工具是preview2而不是rtm(bug的里程碑是1.0.0-rtm)。只有運行時纔是rtm。 – Pawel

6

更新dotnet的核心2.0:文件appname.runtimeconfig.json(用於調試和發佈配置)是在相同的路徑需要作爲appname.dll

它包含:

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

然後dotnet.exe exec "path/to/appname.dll" [appargs]作品。

+0

這個答案與我的部分相關,因爲我也使用了dotnet core 2.0。不知道我是否對我的工作區做了一些奇怪的事情,但我也發現我在'obj'和'bin'目錄中都有.dll。我在'obj'中,意識到'bin'中的''.runtimeconfig.json'文件已經存在。運行那個工作沒有變化。 – voltrevo

1

對於Azure上使用ASP.NET Core 2.0的人來說,這是一個appname.deps.json。