Thursday, January 6, 2022

Error MSB3030: Could not copy the file "StaticWebAssets.xml" because it was not found.

A collegae contacted me today with the following question; his builds started to fail suddenly with the following error:

##[error]C:\Program Files\dotnet\sdk\6.0.101\Microsoft.Common.CurrentVersion.targets(5100,5): Error MSB3030: Could not copy the file "StaticWebAssets.xml" because it was not found.

He was wondering if something was changed on the build server and indeed he was right; we recently installed the .NET 6 SDK on the build server.

As you can see in the error message, the project was built using the .NET 6 SDK.

To fix the error we provided a short and long term solution.

The short term solution

The short term solution was triggering a clean solution before building the project. This will remove all remaining build artifacts and guarantees a clean slate.

To achieve this in Azure DevOps using the Classic pipeline:

  • Go to your Build pipeline
  • Select the Get Sources Tab
  • Set the Clean value to true
  • Save the pipeline and run the build

 Remark: This also fixes the problem in Visual Studio, do a Clean solution before triggering a build.

If you are using the yaml pipelines, you can set this at the workspace level:

The long term solution

To avoid this problem in the future, you can define the SDK version that should be used through a global.json file:

You can create a new global.json file in the current directory by executing the dotnet new command, similar to the following example:

dotnet new globaljson --sdk-version 3.1