Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

Free Fix 1935

MSI 1935 and 2908: Assembly Component Errors During .NET Installations

10 min read Updated October 4, 2026 Installers, Runtimes & App Deployment

Fix it now

Setup tried to place a component into the assembly cache and the store refused it. Microsoft’s message for 1935 carries an HRESULT, an assembly interface, a function and the assembly name, and that HRESULT is the part that decides what to do next. 2908 is the same stage reported as a component that could not be registered.

Reboot first, then run these from an elevated Command Prompt, in order

sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
  1. Reboot before anything else. A pending file rename from an earlier install blocks assembly writes until the machine restarts, and it costs you nothing to rule out.
  2. Note the HRESULT from the 1935 message. 0x800736B3 means the referenced assembly is not installed; 0x800736CC means a file does not match the verification information in its manifest.
  3. Run the three commands above. The third line is only needed if the application requires .NET Framework 3.5.
  4. Reboot again, then run the application’s installer from an elevated Command Prompt.

Run Microsoft’s .NET Framework Repair Tool as well if the framework itself is suspect. It is a free download from Microsoft and it detects and repairs the installed versions in place.

If the application installs you are finished. If it does not, the next section explains what the assembly store checks and which HRESULT you are looking at.

Why it happens

Shared managed and native components are not copied into the application folder. They go into a machine-wide store, versioned and signed so two applications can use different versions of the same library side by side. When an MSI installs such a component it hands it to that store rather than writing a file, and the store validates it before accepting it.

1935 is the store refusing the hand-off. Microsoft publishes it with placeholders for the component, the HRESULT, the assembly interface, the function and the assembly name, which makes it one of the more informative installer errors once you know to read past the number. 2908, published simply as “Could not register component”, is the same stage reported a level up.

The HRESULT decides everything. Two are common enough to memorise. 0x800736B3 is Win32 14003, ERROR_SXS_ASSEMBLY_NOT_FOUND – the referenced assembly is not installed on the system, so a prerequisite is genuinely missing. 0x800736CC is Win32 14028, ERROR_SXS_FILE_HASH_MISMATCH – a component’s file does not match the verification information in the component manifest, which means what is on disk has been altered or damaged and a repair is the route back.

1936 and 1937 are frequently lumped in as “more of the same” and they are not. Microsoft publishes 1936 as an assembly that is not strongly named or is not signed with the minimal key length, and 1937 as a signature or catalogue that could not be verified or is not valid. Both point at signing rather than at a damaged framework, and repairing .NET will not touch either.

The machine is mid-transaction and needs a restart

You have this one if Windows Update ran recently, or another install finished with a restart prompt that somebody dismissed.

  1. Restart and run the installer before opening anything else.
  2. If you want to confirm a rename is pending, look for a PendingFileRenameOperations value under the Session Manager key in the registry.
  3. Let Windows Update finish any outstanding work and restart again if it asks.

Do not delete the pending rename value to force the install through. Those entries complete an operation that is already half done, and removing them leaves mismatched file versions.

A prerequisite assembly is genuinely absent

You have this one if The HRESULT is 0x800736B3, or the message names an assembly you have never installed.

  1. Read the assembly name in the message and install the runtime or redistributable that supplies it.
  2. For .NET Framework 3.5, enable the Windows feature rather than downloading an old redistributable: DISM /Online /Enable-Feature /FeatureName:NetFx3 /All.
  3. Where the missing piece is a Visual C++ runtime, install the matching redistributable from Microsoft in the right architecture.
  4. Rerun the installer once the prerequisite reports as installed.

A file in the store does not match its manifest

You have this one if The HRESULT is 0x800736CC, or several unrelated applications have started failing at the same stage.

  1. Run DISM /Online /Cleanup-Image /RestoreHealth, then sfc /scannow, in that order.
  2. Run Microsoft’s .NET Framework Repair Tool and apply what it recommends.
  3. Reboot, then retry the application setup.

On current Windows builds the 4.x .NET Framework is serviced as part of the operating system, so it is repaired through DISM and Windows Update rather than by downloading a standalone installer.

The write into the store is being denied

You have this one if The HRESULT decodes to access denied, and the machine has been hardened or had a security template applied.

  1. Check the rights on the framework’s assembly folders under %windir%\Microsoft.NET from an elevated prompt.
  2. Restore the normal entries where they are missing rather than granting anything broader.
  3. Check whether an endpoint product is blocking writes to those folders and exclude the installer temporarily to confirm.
  4. Reboot and retry.

If a Group Policy security template is setting those permissions, a local change is undone at the next refresh and the policy has to be adjusted instead.

Full reference

Decoding the HRESULT the message carries

HRESULT Win32 Meaning
0x800736B3 14003 ERROR_SXS_ASSEMBLY_NOT_FOUND The referenced assembly is not installed on your system
0x800736CC 14028 ERROR_SXS_FILE_HASH_MISMATCH A component’s file does not match the verification information in the component manifest
0x80070005 5 ERROR_ACCESS_DENIED The write into the store was refused
0x80070002 2 ERROR_FILE_NOT_FOUND A file the operation needed was not there

The pattern generalises: any 0x8007xxxx code is a Win32 error wrapped as an HRESULT, and the last four hexadecimal digits in decimal give the number to look up. That turns most unfamiliar 1935 messages into something you can read without searching for the whole string.

The four assembly numbers, as published

Number Published message
1935 An error occurred during the installation of assembly component [2]. HRESULT: [3]. {{assembly interface: [4], function: [5], assembly name: [6]}}
1936 An error occurred during the installation of assembly [6]. The assembly is not strongly named or is not signed with the minimal key length. HRESULT: [3].
1937 An error occurred during the installation of assembly [6]. The signature or catalog could not be verified or is not valid. HRESULT: [3].
2908 Could not register component [2].

1936 and 1937 send you somewhere quite different from 1935. Both describe a signing problem with the assembly being installed, so the questions are whether the package was built correctly, whether the catalogue travelled with it, and whether the machine trusts the publisher – not whether the framework is damaged.

Repair order that does not waste an afternoon

  1. Restart. Rule out a pending file rename before anything else, because everything below fails while one is outstanding.
  2. Read the HRESULT and decide whether you are missing a prerequisite or repairing damage. They have different fixes and doing both takes twice as long.
  3. DISM /Online /Cleanup-Image /ScanHealth to find out whether the component store is damaged before you try to repair it.
  4. DISM /Online /Cleanup-Image /RestoreHealth, then sfc /scannow. In that order: sfc draws its replacements from the store DISM repairs.
  5. The .NET Framework Repair Tool last, on a store that is already healthy.
  6. Restart once more and rerun the application’s installer as the first thing you do.

Things worth knowing before you start removing frameworks

  • On current Windows builds .NET Framework 4.x is part of the operating system. It cannot simply be uninstalled and reinstalled, and the standalone installer will decline to run.
  • .NET Framework 3.5 is an optional Windows feature whose payload is fetched on demand, so enabling it needs either internet access or a local source.
  • Community cleanup tools that strip framework versions can leave a machine unable to service itself. Take a system image first if you use one at all.
  • A 1935 that appears on several unrelated machines at the same time usually follows an update rather than local damage; check what was deployed that week.
  • If the assembly named in the message belongs to the application rather than to Microsoft, this is the vendor’s problem and the log is what they need.

Every code this article covers

Code What it points at Source
1935 An error occurred installing an assembly component; the message carries the HRESULT, assembly interface, function and assembly name Microsoft Learn
2908 A component could not be registered during installation Microsoft Learn
0x800736B3 Win32 14003, ERROR_SXS_ASSEMBLY_NOT_FOUND: the referenced assembly is not installed on the system Microsoft Learn
0x800736CC Win32 14028, ERROR_SXS_FILE_HASH_MISMATCH: a component’s file does not match the verification information in its manifest Microsoft Learn
1936 The assembly is not strongly named, or is not signed with the minimal key length Microsoft Learn
1937 The assembly’s signature or catalogue could not be verified, or is not valid Microsoft Learn

Confirm the fix worked

  1. Rerun the application installer and confirm it completes without rolling back.
  2. Run sfc /scannow and confirm it reports no integrity violations.
  3. Run DISM /Online /Cleanup-Image /ScanHealth and confirm no component store corruption is detected.
  4. Launch the application and exercise a feature that uses the shared components, so you know they really registered.
  5. Install a second application that depends on the same framework, which tells you the store is healthy generally.

Questions people ask about this

Does any of this require buying something?

No. The .NET Framework, the repair tool and every command used here come from Microsoft at no charge, and repairing them does not touch your Windows licence or activation state.

Should I uninstall the .NET Framework and reinstall it?

Not as a first step, and on current Windows builds the 4.x framework cannot simply be removed because it is part of the operating system. Repair through DISM, system file checking and Windows Update instead.

The HRESULT is not one of the two listed. What do I do with it?

Read it as a wrapped Win32 error. Anything of the form 0x8007xxxx converts: take the last four hexadecimal digits, convert to decimal, and look that number up. It is usually access denied or file not found, and that is the fault to chase rather than 1935 itself.

I am getting 1936 rather than 1935. Same fix?

No. 1936 says the assembly is not strongly named or is not signed with the minimal key length, which is a property of the thing being installed rather than of your machine. Repairing the framework will not change it; the package or its signing is what needs attention.

Why does the same installer work on a clean machine?

Because the fault is in this machine’s framework or component store, not in the package. A clean build has an intact store, which is why comparing against one is the fastest way to confirm where the problem lies.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

Free Fix MSI 1619 and 1620: This Installation Package Could Not Be Opened Free Fix Error 1601 and 1719: Windows Installer Service Could Not Be Accessed License Error MSI 1625: This Installation Is Forbidden by System Policy – How to Unblock Free Fix MSI 1327: Invalid Drive – Fixing Broken Shell Folder and Mapped Drive Paths
โ† Back to Knowledge Base