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):
<?xml version="1.0" encoding="utf-8"?> | |
<!-- | |
This file is used by the publish/package process of your Web project. You can customize the behavior of this process | |
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121. | |
--> | |
<Project ToolsVersion="4.0" xmlns=http://schemas.microsoft.com/developer/msbuild/2003> | |
<PropertyGroup> | |
<WebPublishMethod>MSDeploy</WebPublishMethod> | |
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> | |
<LastUsedBuildConfiguration>Development</LastUsedBuildConfiguration> | |
<LastUsedPlatform>Any CPU</LastUsedPlatform> | |
<SiteUrlToLaunchAfterPublish>https://development.example.be/DocumentStorageServices/</SiteUrlToLaunchAfterPublish> | |
<ExcludeApp_Data>False</ExcludeApp_Data> | |
<ProjectGuid>da330de7-29b0-4d39-a33a-6aaa7837f991</ProjectGuid> | |
<SelfContained>false</SelfContained> | |
<MSDeployServiceURL>development.example.be</MSDeployServiceURL> | |
<DeployIisAppPath>development.example.be/DocumentStorageServices</DeployIisAppPath> | |
<RemoteSitePhysicalPath /> | |
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer> | |
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod> | |
<EnableMSDeployBackup>True</EnableMSDeployBackup> | |
<UserName>*******</UserName> | |
<_SavePWD>True</_SavePWD> | |
<!-- š Here I'm still referring to .NET 5.0 š--> | |
<TargetFramework>net5.0</TargetFramework> | |
</PropertyGroup> | |
</Project> |
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.