【问题标题】:The library 'hostpolicy.dll' required to execute the application执行应用程序所需的库“hostpolicy.dll”
【发布时间】:2017-12-21 19:55:34
【问题描述】:

添加 log4net 后,我​​通过 dotnet 命令在发布时收到以下错误消息(IIS 给出 500 错误)。

遇到致命错误。在“MonPath”中找不到执行应用程序所需的库“hostpolicy.dll”

框架:.Net CoreApp 1.1

在 VS2017 的 Debug 模式下,应用程序正在运行。

在我的 .csproj 中:

PackageReference Include="Microsoft.NETCore.DotNetHostPolicy" 版本="1.1.2" PackageReference 包括="Microsoft.AspNetCore" 版本="1.1.2" TargetFramework netcoreapp1.1

我已经为 project.json 找到了这个解决方案,但是如何将它应用到 .csproj?

“编译选项”:{ “emitEntryPoint”:真 }

【问题讨论】:

标签: c# .net-core


【解决方案1】:

刚刚遇到了类似的问题,单元测试无法在 VS2015 中发现或执行。如果我在 CMD 提示符中运行该命令,则会出现与上述相同的错误。

网上找不到解决办法,花了一天才发现需要在project.json文件中放置以下内容

"runtimeOptions": {
  "framework": {
    "name": "Microsoft.NETCore.App",
    "version": "1.0.0"
  }
},

这会在应用构建的 Debug 目录中创建 {app}.runtimeconfig.json 文件。

这一切都是因为我安装了 DotNetCore 2 Preview。

把它放在这里是因为它是谷歌搜索中最反感和第二的,希望需要它的人能找到。

【讨论】:

  • Core 2.0(以及 1.1)不适用于 project.json 文件。不知道它对你有什么作用。
【解决方案2】:

我在尝试从路径运行 .exe 时遇到此错误:

[myProjectPath]\obj\Debug\netcoreapp3.1

而不是路径:

[myProjectPath]\bin\Debug\netcoreapp3.1

以防万一其他人犯同样的愚蠢错误。

【讨论】:

    【解决方案3】:

    对于我的“发布”文件夹中的 .net Core 3.1 应用程序,缺少一些文件,例如

    • '.deps.json'
    • '.runtimeconfig.json'

    和其他一些。 好吧,这是因为我添加了一个控制台项目作为对另一个控制台项目的依赖项。对于依赖项目,文件丢失了。 这导致了异常。 “依赖于框架”的应用程序需要这些文件,否则它将作为“独立”运行,并将在“C:\Program Files\dotnet”文件夹中搜索“hostpolicy.dll”,因为无论什么原因都不存在原因。

    【讨论】:

    • 在构建时如何强制复制这些文件?我想我需要在 csproj 中指定它们。
    【解决方案4】:

    我似乎是一个 .net 核心版本问题。在我的 VS 项目自动升级到 .NET Core 1.1.2 后,我在生产服务器上遇到了同样的问题。

    我只是从这里在我的生产服务器上安装了 1.1.2 .net 核心运行时:https://www.microsoft.com/net/download/core#/runtime

    【讨论】:

      【解决方案5】:

      对于最新的 csproj 格式(vs 2017),您需要在 csproj 文件中添加 RuntimeIdentifier 元素:

      <RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
      

      <RuntimeIdentifier>win7-x86</RuntimeIdentifier>
      

      顺便说一句,您可能需要恢复 nuget 包以避免 project.assets.json 中的断言错误 ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json

      【讨论】:

        【解决方案6】:

        这是一个老问题,似乎有多种可能的答案,尤其是在 Azure 部署期间遇到的问题。就我而言,我在尝试运行部署到本地 IIS 的 ASP.NET Core 2.1 应用程序时遇到了这个问题。

        对我来说,这是由于尝试运行一个独立的应用程序造成的 - 一个输出到 EXE 而不是 DLL 的应用程序,并且不依赖于运行时 - 使用 dotnet 命令。我不需要使用 dotnet CLI 来执行已经是 EXE 的文件;我只需要直接执行它。但是,在这种情况下,此错误消息完全具有误导性。

        我在尝试直接在服务器上执行应用程序以解决为什么它似乎无法在 IIS 中启动时遇到了这个问题,这是由于没有正确版本的 ASP.NET Core Hosting 造成的已安装捆绑包。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-09
          • 2021-06-05
          • 1970-01-01
          • 2011-10-26
          • 1970-01-01
          • 2016-10-31
          • 2020-08-03
          相关资源
          最近更新 更多