After upgrading to .NET 8.0.11, the build for some of my projects failed…
1 Problem descriptionBuild 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 the 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. New build configurations and build scripts are needed.
\ I think I can locate the change in behavior somewhere between (.NET Framework 8.0.0/.NET SDK 8.0.100) and (.NET Framework 8.0.11/.NET SDK 8.0.404). Not all, but some project builds failed.
1.1 The environmentThe typical environment to which this article applies is C#/VS2022.
.NET version 8.0.11 or later
And you are building project type SelfContained or SingleFile
1.2 Problem manifestationYou get Errors/Exceptions:
The library 'hostpolicy.dll' required to execute the application was not found
error MSB4018: …. Could not find file ….. singlefilehost.exe
\
\
1.3 Cause of problem and resolutionIt looks like the flag true in the project file .csproj stopped to work in some cases. I was relying on that flag in my build scripts after that. No problem, we can anticipate that thing, just when we know what to expect.
\ It looks like the build process invoked “dotnet publish” from .NET SDK 9.* for projects that I was building for .NET 8.* framework. So, I decided to use global.json file to explicitly specify which SDK I want to use.
2 Code SamplesThese are old build settings that worked in NET8.0.0/SDK8.0.100 but stopped working in later versions
// 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.\ These are new build settings that work in NET8.0.11/SDK8.0.404
// NET_8.0.11/SDK_8.0.404\ These are new build settings that work in NET9.0.0/SDK9.0.101
// NET_9.0.0/SDK_9.0.101\
All Rights Reserved. Copyright , Central Coast Communications, Inc.