Edit

Share via


MSB3644 diagnostic code

This article describes the MSB3644 error code.

Message text

MSB3644: The reference assemblies for 'value' were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks

Description

This error occurs when the .NET reference assemblies aren't found for the version of .NET that a project requests.

You might see this error if your project requests an assembly version that isn't recognized or installed. The error also occurs when the reference assemblies folder for the required .NET version is corrupted or not present.

Resolution

Verify your project references the Microsoft.NETFramework.ReferenceAssemblies NuGet package. For more information, see .NET Framework targeting pack NuGet packages.

Project file framework identifier and version

Check your project file for spelling or typographical errors in the TargetFramework, TargetFrameworks, TargetFrameworkIdentifier, or TargetFrameworkVersion properties.

For example, the following code in a project file causes the MSB3644 error:

    <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == ''">
        <TargetFrameworkIdentifier>.NETCORAPP</TargetFrameworkIdentifier>
        <TargetFrameworkVersion>3.1</TargetFrameworkVersion>
    </PropertyGroup>

The value for the TargetFrameworkIdentifier property is misspelled. The correct value is .NETCOREAPP with the missing E as in CORE.

When you specify values for multiple target frameworks with the TargetFrameworks property, be sure to separate the values with a semi-colon (;). If you use an invalid delimiter, such as a comma (,), the system generates the MSB3644 error.

Here's an example of the correct syntax:

    <PropertyGroup>
            <TargetFrameworks>net6.0;net5.0;netcoreapp3.1</TargetFrameworks>
    </PropertyGroup>

Reference assemblies folder

Note the framework identifier and version requested in the TargetFramework, TargetFrameworkIdentifier, and TargetFrameworkVersion properties, and look for the reference assembly folder for that version on the local drive.

On Windows, the 32-bit reference assemblies for .NET Core should be located in the C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore folder. For 64-bit, the .NET Framework reference assembly folders should be located in the C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework path.

If the folder for the version your project needs isn't present or appears corrupted, you might need to install or reinstall the assembly version. You can install the required version at Download .NET. For more information, see Reference assemblies.

Applies to

All versions of MSBuild