找不到库hostpolicy.dll

Nat*_*ini 41 .net .net-core dotnet-cli

我有一个简单的.NET Core项目(控制台应用程序),我正在尝试编译和运行.dotnet build成功,但是当我这样做时,我收到以下错误dotnet run:

? 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].
Run Code Online (Sandbox Code Playgroud)

我的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"
}
Run Code Online (Sandbox Code Playgroud)

什么是hostpolicy.dll,为什么它会丢失?

Sol*_*eil 28

dotnet core 2.0的更新:文件appname.runtimeconfig.json(用于调试和发布配置)需要与appname.dll在同一路径中.

它包含:

{
  "runtimeOptions": {
    "tfm": "netcoreapp2.0",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "2.0.0"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后dotnet.exe exec "path/to/appname.dll" [appargs]工作.

  • 这个答案部分与我有关,因为我也在使用dotnet core 2.0.不确定我是否对我的工作区做了一些奇怪的事情,但我也发现我在`obj`和`bin`目录中都有.dll.我在`obj`,并意识到`bin`中的那个已经有了`.runtimeconfig.json`文件.运行那个没有改变的工作. (2认同)

Jer*_*ers 20

我在 .NET 6.0 中发生过这种情况,不知何故该appname.runtimeconfig.dev.json文件没有在bin/Debug/net6.0/目录中生成。

修复方法是修改.csproj文件并将此片段包含在 <PropertyGroup>元素内:

<GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
Run Code Online (Sandbox Code Playgroud)

我在使用https://www.google.com/search?q=net60+runtimeconfig.dev.json进行搜索时发现了此解决方案,网址为“重大更改:runtimeconfig.dev.json 文件未生成 - .NET | Microsoft Learn与Microsoft.NET.Sdk - .NET 的 MSBuild 属性中的解决方案 微软学习

生成运行时配置开发文件

从 .NET 6 SDK 开始,编译时默认情况下不再生成[Appname].runtimesettings.dev.json文件。如果您仍希望生成此文件,请将属性设置为。GenerateRuntimeConfigDevFiletrue

<PropertyGroup>
  <GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

将其应用到.csproj文件并重新构建项目后,从 Visual Studio Code 进行调试工作正常,包括在我之前设置的断点处停止。

  • 这对我来说有效 (3认同)

Nat*_*ini 19

此错误消息无益.在实际的问题是缺少emitEntryPoint属性:

  "buildOptions": {
    ...
    "emitEntryPoint": true
  },
Run Code Online (Sandbox Code Playgroud)

添加完成后,编译器会告诉您任何其他问题(比如缺少static void Main()方法).成功编译项目将导致dotnet run可以执行的输出.

  • 这如何与新的Visual Studio 2017 RC项目一起工作,微软放弃了`project.json`是对`.csproj`文件的支持?据我所知,我的项目设置为创建可执行文件. (21认同)
  • 我已经看到这种情况也发生在csproj文件中,针对aspnetcore项目中的netcoreapp1.1. (4认同)
  • @Carson - 使用安全修复程序更新到1.1.1并更新到最新的2017RC解决了这个问题. (4认同)
  • 是的,我有一个csproj目标1.1,我在第一次编译时出现此错误.如果我连续编译两次,应用程序总是运行..... (3认同)
  • @NickAcosta - 我想这些问题是为什么工具是preview2而不是rtm(bug的里程碑是1.0.0-rtm).只有运行时是rtm. (2认同)
  • @Carson - 我没有修复,但我已将其记录为错误:https://github.com/dotnet/sdk/issues/672有些人在夜间版本中取得了成功,但我不是.GitHub问题在他们的雷达上,并列为已知问题. (2认同)

小智 8

我在 VS19 中运行测试时遇到类似的问题。

==========开始试运行==========

Testhost 进程退出并出现错误:遇到致命错误。在“C:\Program Files\dotnet”中找不到执行应用程序所需的库“hostpolicy.dll”。无法作为独立应用程序运行。

经过深入研究,我找到了问题的根源:

测试二进制文件夹中的完整路径\<my module\>.runtimeconfig.json超过 255 个字符。重命名模块,使文件路径变短,解决了问题。


hom*_*omk 6

对我来说这是一个愚蠢的错误:我启动了一个错误的文件。

  • 你真可笑!还有我! (2认同)

Mar*_*cka 5

如果我没记错的话,您可以解决问题的一种情况是:您有一个引用另一个应用程序项目(不是库)的集成项目。在这种情况下,dependentProject.runtimeconfig.json不会被复制到您的集成项目的输出文件夹,您将无法运行dependentProject.exe二进制文件,因为它会抛出The library hostpolicy.dll was not found..

这有一个 Github问题和一个解决方法

编辑:应固定在.NET SDK 5.0.200。