109 votes

La bibliothèque hostpolicy.dll n'a pas été trouvée.

J'ai un projet .NET Core simple (application console) que j'essaie de compiler et d'exécuter. dotnet build réussit, mais j'obtiens l'erreur suivante quand je fais 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].

Mon project.json ressemble à ceci :

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

Qu'est-ce que hostpolicy.dll et pourquoi est-il absent ?

2 votes

Je suis tombé sur cette erreur en essayant d'exécuter un DotnetCliTool personnalisé avec Visual Studio 2017 RC3 auquel il manquait un runtimeconfig.json. La prochaine version de VS le contiendra par défaut. github.com/dotnet/cli/issues/5593#issuecomment-277638612

0 votes

La même erreur peut s'afficher, si vous exécutez dotnet MyApp.exe, exécutez simplement MyApp.exe "La bibliothèque 'hostpolicy.dll' est requise" si elle est exécutée à partir du dossier deploy, mais emitEntryPoint est vrai.

1 votes

Avec la sortie de asp.net core 2.1, la tâche de publication webjob présente un bogue/une régression qui peut provoquer cette erreur si vous ciblez le framework complet. La solution est d'épingler le SDK à la version 2.1.200 jusqu'à ce que le problème soit résolu. Vous pouvez également supprimer le fichier run.cmd pour remettre rapidement en marche vos travaux de production.

1voto

WENDYN Points 360

Mon problème est que j'ai 2 projets d'applications .NET Core et l'un d'eux est dépendant de l'autre . (pour que je puisse ensuite exécuter cette application à partir de cette autre application) Mais les applications .NET Core (avec la configuration par défaut) besoin du fichier <nom de l'assemblage>.runtimeconfig.json (pour obtenir une certaine configuration de lancement) qui n'est pas copié par défaut.


La seule solution qui a fonctionné pour moi a été d'ajouter à Project Properties > Build Events (du projet dépendant) cette commande :

COPY "$(SolutionDir)<dependency name>\$(OutDir)<dependency assymbly name>.runtimeconfig.json" "$(SolutionDir)$(ProjectName)\$(OutDir)" /Y

Mais vous pouvez également copier à la main le fichier <nom de l'assemblage de dépendance>.runtimeconfig.json dans le projet dépendant.


Notez qu'il devrait y avoir un meilleur moyen plus générique de faire cela pour chaque projet d'application .NET Core automatiquement.

1voto

dchang Points 1

Cette erreur est assez générique. Le vrai problème peut donc être n'importe quoi.

Dans mon cas (si cela peut aider quelqu'un qui a le même problème), j'ai créé un projet de bibliothèque de classes au lieu d'un projet d'application console.

Une bibliothèque de classe DLL ne peut pas être exécutée avec MSBuild, même si elle a une méthode Main. Seule la DDL d'une application console peut être exécutée avec MSBuild. dotnet <appname>.dll

0voto

Richard Points 411

Pour moi, avec ASP.NET Core 2.0 sur Azure, c'est le fichier appname.deps.json qui a fait l'affaire. Vous devez le copier de votre répertoire de construction vers Azure.

1 votes

Qu'avez-vous fait à ce fichier, s'il vous plaît ?

1 votes

@YoussefSherif Vous devez le copier depuis votre répertoire de construction vers Azure. Je pensais qu'il pouvait être omis mais apparemment non.

0voto

Kyralessa Points 76456

J'ai eu ce même problème avec une application WPF .NET Core 3.0, mais j'ai constaté que mon application ne s'exécutait pas non plus dans Visual Studio 2019.

J'ai découvert sur la page des propriétés du projet (clic droit sur le projet > Propriétés) que le cadre cible était défini sur .NET Core 3.0.

J'ai récemment mis à jour VS 2019, qui a également installé .NET Core 3.1. J'ai donc choisi cette option dans la liste déroulante et cela a fonctionné à nouveau.

(J'ai également dû mettre à jour mon raccourci pour qu'il pointe vers le dossier netcoreapp3.1 au lieu de l'ancien dossier netcoreapp3.0).

0voto

user3980824 Points 1

Promouvoir le commentaire de voltrevo comme une réponse car je pense que cela devrait être le cas le plus courant du problème. Lorsque vous construisez votre solution, vous pouvez parfois obtenir 2 répertoires avec des sorties bin et obj. Le répertoire 'Bin' contient tout ce qui est nécessaire pour exécuter la commande dotnet.exe. Exécutez simplement la commande à partir du répertoire bin et tout devrait bien se passer :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X