paint-brush
Maitiro eku Troubleshoot 'hostpolicy.dll' uye 'singlefilehost.exe' Zvakanganisa mu.NET 8.0.11by@markpelf
Nhoroondo itsva

Maitiro eku Troubleshoot 'hostpolicy.dll' uye 'singlefilehost.exe' Zvakanganisa mu.NET 8.0.11

by Mark Pelf5m2025/01/03
Read on Terminal Reader

Kurebesa; Kuverenga

Mushure mekusimudzira kune .NET 8.0.11, ndakatanga kuwana zvikanganiso, uye kuvaka / maapplication akakundikana. Ini ndanga ndichiwana "hostpolicy.dll...haina kuwanikwa" uye "kanganiso MSB4018: ... Hatina kuwana ... singlefilehost.exe".
featured image - Maitiro eku Troubleshoot 'hostpolicy.dll' uye 'singlefilehost.exe' Zvakanganisa mu.NET 8.0.11
Mark Pelf HackerNoon profile picture
0-item

Kutyora Kuchinja mu.NET Vaka Zvishandiso Kubva 8.0.0 kusvika 8.0.11

Mushure mekusimudzira kuNET 8.0.11, kuvaka kwemamwe mapurojekiti angu kwakakundikana…

1 Dambudziko tsananguro

Vaka zvirongwa zvepurojekiti zvese zvakashanda zvakanaka kumwe kwakapoteredza .NET 8.0.0. Gare gare, nekuvandudzwa kweNET runtime kune gare gare shanduro dze.NET 8.0 uye .NET 9.0 uye nekusimudzira kuVisual Studio, mamwe emapurojekiti akamira kushanda. Zvinotaridza kunge vakaunza shanduko dzekutyora mumidziyo yekuvaka. Logic ichiri ruzha uye mhando dzekuvaka dzakafanana, maturusi ekuvaka chete akatanga kuita zvakasiyana. Zvitsva zvekuvaka zvigadziriso uye kuvaka zvinyorwa zvinodiwa.


Ndinofunga kuti ndinogona kutsvaga kuchinja kwemaitiro pane imwe nzvimbo pakati pe (.NET Framework 8.0.0/.NET SDK 8.0.100) uye (.NET Framework 8.0.11/.NET SDK 8.0.404). Kwete zvese, asi mamwe mapurojekiti anovaka akakundikana.

1.1 Zvakatipoteredza

Iyo yakajairika nharaunda iyo chinyorwa ichi chinoshanda ndeye C #/VS2022.

.NET shanduro 8.0.11 kana kuti gare gare

Uye uri kuvaka purojekiti mhando SelfContained kana SingleFile

1.2 Dambudziko kuratidza

Iwe unowana Zvikanganiso / Kunze :

  • Raibhurari ye'hostpolicy.dll' inodiwa kuita application haina kuwanikwa

  • kukanganisa MSB4018: .... Hatina kuwana faira ….. singlefilehost.exe


 +++Error1,When running the application:++++++++++++++++++++ A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\Program Files\dotnet\'. Failed to run as a self-contained app. - The application was run as a self-contained app because 'C:\tmpNetBundle\BundleExample02_NET90\ConsoleApp2C\ SelfContained_SingleFile_win-x64\ConsoleApp2C.runtimeconfig.json' was not found. - If this should be a framework-dependent app, add the 'C:\tmpNetBundle\BundleExample02_NET90\ConsoleApp2C\ SelfContained_SingleFile_win-x64\ConsoleApp2C.runtimeconfig.json' file and specify the appropriate framework. PS C:\tmpNetBundle\BundleExample02_NET90\ConsoleApp2C\ SelfContained_SingleFile_win-x64> +++Error2,During build++++++++++++++++++++ error MSB4018: The "GenerateBundle" task failed unexpectedly. [C:\tmpNetBundle\BundleExample01_NET_8.0.0_SDK_8.0.100\ConsoleApp2\ConsoleApp2.csproj] error MSB4018: System.IO.FileNotFoundException: Could not find file 'C:\tmpNetBundle\BundleExample01_NET_8.0.0_SDK_8.0.100\ConsoleApp2\ obj\Release\net8.0-windows\win-x64\singlefilehost.exe'.


1.3 Chikonzero chedambudziko uye kugadzirisa

Zvinoita semureza <PublishSingleFile>yechokwadi</PublishSingleFile> mupurojekiti faira .csproj yakamira kushanda mune dzimwe nguva. Ini ndanga ndichivimba nemureza iwoyo mune yangu yekuvaka zvinyorwa mushure meizvozvo. Hapana dambudziko, tinogona kutarisira chinhu ichocho, kana taziva zvekutarisira.


Zvinoita senge magadzirirwo ekuvaka akakokerwa ku "dotnet publish" kubva kuNET SDK 9.* kumapurojekiti andanga ndichivakira .NET 8.* framework. Saka, ndakafunga kushandisa global.json faira kutsanangura zvakajeka kuti ndeipi SDK yandinoda kushandisa.

2 Code Samples

Aya ndiwo magadzirirwo ekare akashanda muNET_8.0.0/SDK_8.0.100 asi akamira kushanda mune dzakazotevera.

 // NET_8.0.0/SDK_8.0.100 // NOTE: These project settings all worked well somewhere around .NET 8.0.0. Later, with the upgrade of .NET runtime to later versions of .NET 8.0 and .NET 9.0 and an upgrade to Visual Studio, some of projects stopped working. It looks like they introduced breaking changes in the build tools. Logic is still sound and build types are the same, just the build tools started to behave a bit differently. A new build configurations and build scripts are needed. <!--ConsoleApp2C.csproj +++++++++++++++++++++++++++++++++++++--> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0-windows</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PlatformTarget>x64</PlatformTarget> <Platforms>AnyCPU;x64</Platforms> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <DebugType>embedded</DebugType> <PublishSingleFile>true</PublishSingleFile> <PublishTrimmed>true</PublishTrimmed> <IsTrimmable>true</IsTrimmable> <SelfContained>true</SelfContained> <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract> <EnableCompressionInSingleFile>true</EnableCompressionInSingleFile> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\ClassLibrary1\ClassLibraryA.csproj" /> </ItemGroup> <Target Name="PostBuild" AfterTargets="PostBuildEvent"> <Exec Command="echo +++Post-Build+++++&#xD;&#xA; if $(ConfigurationName) == Debug ( &#xD;&#xA;echo +++++Debug+++++ &#xD;&#xA;) &#xD;&#xA;&#xD;&#xA; if $(ConfigurationName) == Release ( &#xD;&#xA; echo +++++SelfContained_SingleFile_win-x64.cmd+++++ &#xD;&#xA; call SelfContained_SingleFile_win-x64.cmd &#xD;&#xA; echo +++++SelfContained_SingleFile_win-x64_Trimmed.cmd+++++ &#xD;&#xA; call SelfContained_SingleFile_win-x64_Trimmed.cmd &#xD;&#xA;) " /> </Target> </Project> +++++Script: SelfContained_SingleFile_win-x64.cmd dotnet publish ConsoleApp2C.csproj --no-build --runtime win-x64 --configuration Release -p:PublishSingleFile=true -p:SelfContained=true -p:PublishReadyToRun=false -p:PublishTrimmed=false --output ./SelfContained_SingleFile_win-x64 +++++Script: SelfContained_SingleFile_win-x64_Trimmed.cmd dotnet publish ConsoleApp2C.csproj --no-build --runtime win-x64 --configuration Release -p:PublishSingleFile=true -p:SelfContained=true -p:PublishReadyToRun=false -p:PublishTrimmed=true --output ./SelfContained_SingleFile_win-x64_Trimmed


Aya ndiwo marongero matsva ekuvaka anoshanda muNET_8.0.11/SDK_8.0.404

 // NET_8.0.11/SDK_8.0.404 <!--ConsoleApp2C.csproj +++++++++++++++++++++++++++++++++++++--> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0-windows</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PlatformTarget>x64</PlatformTarget> <Platforms>AnyCPU;x64</Platforms> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <DebugType>embedded</DebugType> <PublishSingleFile>true</PublishSingleFile> <PublishTrimmed>true</PublishTrimmed> <IsTrimmable>true</IsTrimmable> <SelfContained>true</SelfContained> <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract> <EnableCompressionInSingleFile>true</EnableCompressionInSingleFile> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\ClassLibrary1\ClassLibraryA.csproj" /> </ItemGroup> <Target Name="RunAfterBuild1" AfterTargets="Build"> <Exec Command="call SelfContained_SingleFile_win-x64.cmd" Condition=" '$(BuildingInsideVisualStudio)' == 'true' "/> </Target> <Target Name="RunAfterBuild2" AfterTargets="Build"> <Exec Command="call SelfContained_SingleFile_win-x64_Trimmed.cmd" Condition=" '$(BuildingInsideVisualStudio)' == 'true' "/> </Target> </Project> +++++Script: SelfContained_SingleFile_win-x64.cmd echo .NET SDK version: dotnet --version dotnet publish ConsoleApp2C.csproj --nologo --no-restore --runtime win-x64 --configuration Release -p:PublishSingleFile=true -p:SelfContained=true -p:PublishReadyToRun=false -p:PublishTrimmed=false --output ./SelfContained_SingleFile_win-x64 +++++Script: SelfContained_SingleFile_win-x64_Trimmed.cmd echo .NET SDK version: dotnet --version dotnet publish ConsoleApp2C.csproj --nologo --no-restore --runtime win-x64 --configuration Release -p:PublishSingleFile=true -p:SelfContained=true -p:PublishReadyToRun=false -p:PublishTrimmed=true --output ./SelfContained_SingleFile_win-x64_Trimmed +++++Configfile: global.json { "sdk": { "version": "8.0.404" } }


Aya ndiwo marongero matsva ekuvaka anoshanda muNET_9.0.0/SDK_9.0.101

 // NET_9.0.0/SDK_9.0.101 <!--ConsoleApp3C.csproj +++++++++++++++++++++++++++++++++++++--> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net9.0-windows7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PlatformTarget>x64</PlatformTarget> <Platforms>AnyCPU;x64</Platforms> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <DebugType>embedded</DebugType> <PublishSingleFile>true</PublishSingleFile> <PublishTrimmed>true</PublishTrimmed> <IsTrimmable>true</IsTrimmable> <SelfContained>true</SelfContained> <PublishReadyToRun>true</PublishReadyToRun> <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract> <EnableCompressionInSingleFile>true</EnableCompressionInSingleFile> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\ClassLibrary1\ClassLibraryA.csproj" /> </ItemGroup> <Target Name="RunAfterBuild1" AfterTargets="Build"> <Exec Command="call SelfContained_SingleFile_win-x64_ReadyToRun.cmd" Condition=" '$(BuildingInsideVisualStudio)' == 'true' " /> </Target> <Target Name="RunAfterBuild2" AfterTargets="Build"> <Exec Command="call SelfContained_SingleFile_win-x64_Trimmed_ReadyToRun.cmd" Condition=" '$(BuildingInsideVisualStudio)' == 'true' " /> </Target> </Project> +++++Script: SelfContained_SingleFile_win-x64_ReadyToRun.cmd echo .NET SDK version: dotnet --version dotnet publish ConsoleApp3C.csproj --nologo --no-restore --runtime win-x64 --configuration Release -p:PublishSingleFile=true -p:SelfContained=true -p:PublishTrimmed=false -p:PublishReadyToRun=true --output ./SelfContained_SingleFile_win-x64_ReadyToRun +++++Script: SelfContained_SingleFile_win-x64_Trimmed_ReadyToRun.cmd echo .NET SDK version: dotnet --version dotnet publish ConsoleApp3C.csproj --nologo --no-restore --runtime win-x64 --configuration Release -p:PublishSingleFile=true -p:SelfContained=true -p:PublishReadyToRun=true -p:PublishTrimmed=true --output ./SelfContained_SingleFile_win-x64_Trimmed_ReadyToRun +++++Configfile: global.json { "sdk": { "version": "9.0.101" } }