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.
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
- 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.
- 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.
- Run the three commands above. The third line is only needed if the application requires .NET Framework 3.5.
- 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.
- Restart and run the installer before opening anything else.
- If you want to confirm a rename is pending, look for a PendingFileRenameOperations value under the Session Manager key in the registry.
- 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.
- Read the assembly name in the message and install the runtime or redistributable that supplies it.
- For .NET Framework 3.5, enable the Windows feature rather than downloading an old redistributable:
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All. - Where the missing piece is a Visual C++ runtime, install the matching redistributable from Microsoft in the right architecture.
- 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.
- Run
DISM /Online /Cleanup-Image /RestoreHealth, thensfc /scannow, in that order. - Run Microsoft’s .NET Framework Repair Tool and apply what it recommends.
- 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.
- Check the rights on the framework’s assembly folders under
%windir%\Microsoft.NETfrom an elevated prompt. - Restore the normal entries where they are missing rather than granting anything broader.
- Check whether an endpoint product is blocking writes to those folders and exclude the installer temporarily to confirm.
- 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
- Restart. Rule out a pending file rename before anything else, because everything below fails while one is outstanding.
- 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.
DISM /Online /Cleanup-Image /ScanHealthto find out whether the component store is damaged before you try to repair it.DISM /Online /Cleanup-Image /RestoreHealth, thensfc /scannow. In that order: sfc draws its replacements from the store DISM repairs.- The .NET Framework Repair Tool last, on a store that is already healthy.
- 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
- Rerun the application installer and confirm it completes without rolling back.
- Run
sfc /scannowand confirm it reports no integrity violations. - Run
DISM /Online /Cleanup-Image /ScanHealthand confirm no component store corruption is detected. - Launch the application and exercise a feature that uses the shared components, so you know they really registered.
- 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.
