skip to Main Content

I`m facing an error when trying to deploy an .NET API project to Azure using Azure App Service Deployment Center.

This is the error:

Project "D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj" on node 1 (Restore target(s)).
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242: SDK Resolver Failure: "The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed while attempting to resolve the SDK "Microsoft.NET.Sdk.Web". Exception: "System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:Program Files (x86)dotnetsdk-manifests'.
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at System.IO.FileSystemEnumerableIterator`1.CommonInit()
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at System.IO.Directory.GetDirectories(String path)
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.FallbackForMissingManifest(String manifestId)
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.GetManifestDirectories()
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.<GetManifests>d__7.MoveNext()
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.LoadManifestsFromProvider(IWorkloadManifestProvider manifestProvider)
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.Create(IWorkloadManifestProvider manifestProvider, String dotnetRootPath, String sdkVersion, String userProfileDir)
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.CachingWorkloadResolver.Resolve(String sdkReferenceName, String dotnetRootPath, String sdkVersion, String userProfileDir)
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at Microsoft.DotNet.MSBuildSdkResolver.DotNetMSBuildSdkResolver.Resolve(SdkReference sdkReference, SdkResolverContext context, SdkResultFactory factory)
D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj : error MSB4242:    at Microsoft.Build.BackEnd.SdkResolution.SdkResolverService.ResolveSdk(Int32 submissionId, SdkReference sdk, LoggingContext loggingContext, ElementLocation sdkReferenceLocation, String solutionPath, String projectPath, Boolean interactive, Boolean isRunningInVisualStudio)""
Done Building Project "D:homesiterepositoryApiCustom.Common.APICustom.Common.API.csproj" (Restore target(s)) -- FAILED.

Build FAILED.

What can I do to resolve this?

4

Answers


  1. One of the workarounds is to use Azure pipelines.

    1. Try creating an Azure Pipeline from the DevOps portal.
    2. Publish the website in a zip.
    3. Deploy to Azure App Service by creating Service Connection in Azure DevOps.

    REFERENCES: Deploy ASP.NET Core websites to Azure App Service with Azure Pipelines

    Login or Signup to reply.
  2. I fix this by adding this global.json file on the root project folder

    {
      "sdk": {
        "version": "5.0.406"
      }
    }
    

    It might be different depending on your dotnet sdk version. But just don’t use version 6.

    Login or Signup to reply.
  3. It seems that some planned migration happened to some of Azure App Service machines at around 14-15 May 2022 resulting in the folder D:Program Files (x86)dotnetsdk-manifests disappearing and causing any dotnet publish or any msbuild call to fail, if it needs to resolve a .NET SDK reference in the project:

    Until this is fixed properly by the Azure team, the following workaround can be used:

    1. Uploaded the sdk-manifests folder, with all the contents, from any machine which has the same version of the .NET SDK installed as the one required (used) by your publishing script (which can be set via global.json) to the FTP deployment root folder on Azure App Service, which is D:home there, also referred to via the %HOME% environment variable.

    2. Add the following command immediately before your "dotnet publish" or "msbuild" call:

    set DOTNETSDK_WORKLOAD_MANIFEST_ROOTS=%HOME%sdk-manifests

    Login or Signup to reply.
  4. It appears that SDK version 6.0.201 is the version which has the issue.

    I was able to deploy after pinning the SDK version using the global-json file.

    How to pin sdk version: https://learn.microsoft.com/en-us/dotnet/core/tools/global-json

    {
      "sdk": {
        "version": "6.0.102"
      }
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search