At one of my clients, we use Web Deploy to deploy our ASP.NET Core applications on our on-premise IIS environment.
After upgrading an application to .NET 6, the build pipeline failed and the application wasn't deployed. Let’s find out what was causing the problem.
A look at the build logs revealed the following error message:
Determining projects to restore...
D:\b\3\_work\52\s\DocumentStorage\DocumentStorage.API\DocumentStorage.API.csproj : error NU1201: Project DocumentStorage.Domain is not compatible with net5.0 (.NETCoreApp,Version=v5.0). Project DocumentStorage.Domain supports: net6.0 (.NETCoreApp,Version=v6.0)
D:\b\3\_work\52\s\DocumentStorage\DocumentStorage.API\DocumentStorage.API.csproj : error NU1201: Project DocumentStorage.Infrastructure is not compatible with net5.0 (.NETCoreApp,Version=v5.0). Project DocumentStorage.Infrastructure supports: net6.0 (.NETCoreApp,Version=v6.0)
Failed to restore D:\b\3\_work\52\s\DocumentStorage\DocumentStorage.API\DocumentStorage.API.csproj (in 636 ms).
2 of 3 projects are up-to-date for restore.
##[error]Error: The process 'C:\Program Files\dotnet\dotnet.exe' failed with exit code 1
"C:\Program Files\dotnet\dotnet.exe" publish D:\b\3\_work\52\s\DocumentStorage\DocumentStorage.Proxy\DocumentStorage.Proxy.csproj --configuration Development /p:PublishProfile=Development /p:Password=*** /p:Username=****/p:AllowUntrustedCertificate=True
Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.
More information about the NU1201 error message can be found here: https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu1201
For an unknown reason, it was still thinking that this application should be deployed as a .NET5.0 application which of course is not compatible with the application dependencies that where all using .NET6.0.
So what could make the application think that it was still a .NET5.0 application?
I found the answer in the Web Deploy configuration file(*.pubxml):
Inside this file there was a <TargetFramework> section and this was still pointing to .NET5.0. After changing this to .NET6.0, the error disappeared.