88

コンパイルして実行しようとしている単純な .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].

私の 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ですか? なぜ見つからないのですか?

4

16 に答える 16

26

このエラー メッセージは役に立ちません。実際の問題は、emitEntryPointプロパティの欠落です。

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

static void Main()これが追加されると、コンパイラは他の問題 (メソッドの欠落など) について通知します。プロジェクトを正常にコンパイルすると、dotnet run実行可能な出力が得られます。

于 2016-06-28T20:12:24.097 に答える
5

私が間違っていなければ、この問題が発生するシナリオの 1 つとして次のようなものがあります。別のアプリケーション プロジェクト (ライブラリではない) を参照する統合プロジェクトがあります。この場合、は統合プロジェクトの出力フォルダーにコピーされず、バイナリがスローされるため、バイナリdependentProject.runtimeconfig.jsonを実行できません。dependentProject.exeThe library hostpolicy.dll was not found.

これには Github の問題回避策があります。

編集: .NET SDK 5.0.200で修正する必要があります。

于 2020-07-08T08:06:04.030 に答える
2

私にとっての問題は、バージョンの不一致にありました。別の「.Net core SDK」バージョンがインストールされていて、.json ファイルで別のバージョンが指定されていました。

.json ファイルのバージョンを変更すると、アプリケーションは正常に動作し始めました。

于 2018-09-25T09:49:46.813 に答える
0

.NET Core 3.0 WPF アプリでも同じ問題が発生しましたが、Visual Studio 2019 でもアプリが実行されないことがわかりました。

プロジェクトのプロパティ ページ ([プロジェクト] > [プロパティ] を右クリック) で、ターゲット フレームワークが .NET Core 3.0 に設定されていることを発見しました。

最近、.NET Core 3.1 もインストールされている VS 2019 を更新したので、ドロップダウンでそれに切り替えたところ、再び機能しました。

(以前の netcoreapp3.0 フォルダーではなく、netcoreapp3.1 フォルダーを指すようにショートカットを更新する必要もありました。)

于 2019-10-17T10:18:59.463 に答える
0

VS19でテストを実行する際にも同様の問題がありました。

========== テストランの開始 ==========

Testhost プロセスがエラーで終了しました: 致命的なエラーが発生しました。アプリケーションの実行に必要なライブラリ「hostpolicy.dll」が「C:\Program Files\dotnet」に見つかりませんでした。自己完結型アプリとして実行できませんでした。

それを掘り下げた後、私は問題の原因を見つけました:

テスト バイナリ フォルダー内の .runtimeconfig.json のフル パスが 255 文字を超えていました。モジュールの名前を変更すると、ファイル パスが短くなり、問題が解決しました。

于 2021-12-07T17:11:52.003 に答える