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.

67voto

Soleil Points 1382

Mise à jour pour dotnet core 2.0 et au-delà : le fichier nom de l'application.runtimeconfig.json (pour la configuration de débogage et de libération) est nécessaire dans le même chemin que appname.dll .

Il contient :

{
  "runtimeOptions": {
    "tfm": "netcoreapp2.0",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "2.0.0"
    }
  }
}

puis dotnet.exe exec "path/to/appname.dll" [appargs] travaux.

4 votes

Cette réponse me concerne en partie car j'utilise également dotnet core 2.0. Je ne sais pas si j'ai fait quelque chose de bizarre dans mon espace de travail, mais j'ai également constaté que j'avais des .dll dans les deux fichiers obj y bin répertoires. J'étais dans obj et j'ai réalisé que celui qui est dans bin avait ceci .runtimeconfig.json déjà. L'exécution de celui-ci a fonctionné sans changement.

1 votes

C'était la solution pour moi avec dotnet core 3.0 preview 8 aussi

26voto

Nate Barbettini Points 26922

Ce message d'erreur n'est pas utile. Le site réel Le problème est un manque emitEntryPoint propriété :

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

Une fois que cela a été ajouté, le compilateur vous informera de tout autre problème (comme un fichier manquant static void Main() méthode). Si la compilation du projet est réussie, la sortie sera la suivante dotnet run peut exécuter.

0 votes

Puisque cela se produit toujours dans rtm, il pourrait être utile de le noter dans le repo github, juste au cas où.

2 votes

@NickAcosta - Je suppose que ce genre de problèmes est la raison pour laquelle l'outillage est preview2 et non rtm (le jalon pour le bug est 1.0.0-rtm). Seul le runtime est rtm.

29 votes

Comment cela fonctionne-t-il avec les nouveaux projets Visual Studio 2017 RC, où Microsoft a abandonné project.json est le soutien de .csproj fichiers ? D'après ce que je sais, mon projet est configuré pour créer un exécutable.

6voto

homk Points 94

Pour moi, c'était une erreur stupide : j'ai commencé un mauvais dossier.

6voto

MartyIX Points 4839

Si je ne me trompe pas, voici un scénario dans lequel vous pouvez rencontrer ce problème : Vous avez un projet d'intégration qui fait référence à un autre projet d'application (pas une bibliothèque). Dans ce cas, dependentProject.runtimeconfig.json ne sera pas copié dans le dossier de sortie de votre projet d'intégration et vous ne pourrez pas exécuter dependentProject.exe car il lancera The library hostpolicy.dll was not found. .

Il existe un site Github numéro pour cela et un solution de contournement .

Edit : Devrait être Correction de dans .NET SDK 5.0.200.

3voto

Imma Points 111

Cela s'est produit lorsqu'une prévisualisation de Visual Studio 2019 a mis à niveau .Net Core vers la dernière prévisualisation (plus précisément .Net Core 3.1.100-preview2-014569).

La réinstallation/réparation de .Net Core 3.0.100 a résolu le problème pour moi.

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