2016-06-28 7 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 » «if run from deploy folder, но emitEntryPoint is 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 - Я думаю, что такие проблемы объясняются тем, что оснастка - это предварительный просмотр2, а не rtm (веха для ошибки 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 2.0. Не уверен, что я сделал что-то странное для своего рабочего пространства, но также обнаружил, что у меня есть .dll в каталогах 'obj' и' bin'. Я был в 'obj' и понял, что у этого в' bin' был этот файл '.runtimeconfig.json'. Запуск этого работал без изменений. – voltrevo

1

Для меня с ASP.NET Core 2.0 на Azure это был appname.deps.json, который сделал трюк.

Смежные вопросы